当前位置: 首页 > news >正文

【大数据】Hadoop MapReduce与Hadoop YARN(学习笔记)

一、Hadoop MapReduce介绍

1、设计构思

1)如何对付大数据处理场景

对相互间不具有计算依赖关系的大数据计算任务,实现并行最自然的办法就是采取MapReduce分而治之的策略。

不可拆分的计算任务或相互间有依赖关系的数据无法进行并行计算!

2)构建抽象编程模型

MapReduce借鉴了函数式语言中的思想,用Map和Reduce两个函数提供了高层的并行编程抽象模型。

  • map: 对一组数据元素进行某种重复式的处理
  • reduce: 对Map的中间结果进行某种进一步的结果整理

MapReduce处理的数据类型是<key,value>键值对。

3)统一架构、隐藏底层细节

程序员仅需要关心其应用层的具体计算问题,仅需编写少量的处理应用本身计算问题的业务程序代码。

2、分布式计算概念

分布式计算是一种计算方法,和集中式计算是相对的。

分布式计算将该应用分解成许多小的部分,分配给多台计算机进行处理。

3、MR介绍

Hadoop MapReduce是一个分布式计算框架,用于轻松编写分布式应用程序,这些应用程序以可靠,容错的方式并行处理大型硬件集群(数千个节点)上的大量数据(多TB数据集)

特点:易于编程、良好的扩展性、高容错性、适合海量数据的离线处理

局限性:实时计算性能差、不能进行流式计算(数据不能是动态的)

4、MR实例进程

MRAppMaster:负责整个MR程序的过程调度及状态协调

MapTask:负责map阶段的整个数据处理流程

ReduceTask:负责reduce阶段的整个数据处理流程

5、阶段组成

只能包含一个Map阶段和一个Reduce阶段,或者只有Map阶段

二、MapReduce执行流程

1、MapReduce整体执行流程图

2、Map阶段执行过程

  1. 把输入目录下文件按照一定的标准逐个进行逻辑切片,形成切片规划。
    默认Split size = Block size(128M),每一个切片由一个MapTask处理。(getSplits)
  2. 对切片中的数据按照一定的规则读取解析返回<key,value>对。默认是按行读取数据。key是每一行的起始位置偏移量,value是本行的文本内容。(TextInputFormat)
  3. 调用Mapper类中的map方法处理数据。每读取解析出来的一个<key,value> ,调用一次map方法。
  4. 按照一定的规则对Map输出的键值对进行分区partition。默认不分区,因为只有一个reducetask。分区的数量就是reducetask运行的数量。
  5. Map输出数据写入内存缓冲区,达到比例溢出到磁盘上。溢出spill的时候根据key进行排序sort。默认根据key字典序排序。
  6. 对所有溢出文件进行最终的merge合并,成为一个文件。

3、Reduce阶段执行流程

  1. ReduceTask会主动从MapTask复制拉取属于需要自己处理的数据。
  2. 把拉取来数据,全部进行合并merge,即把分散的数据合并成一个大的数据。再对合并后的数据排序。
  3. 对排序后的键值对调用reduce方法。键相等的键值对调用一次reduce方法。最后把这些输出的键值对写入到HDFS文件中。

三、Shuffle机制

1、Shuffle机制概述

在MapReduce中,指的是将map端的无规则输出按指定的规则“打乱”成具有一
定规则的数据,以便reduce端接收处理。

一般把从Map产生输出开始到Reduce取得数据作为输入之前的过程称作shuffle。

2、Map端Shuffle

Collect阶段:将MapTask的结果收集输出到默认大小为100M的环形缓冲区,保存之前会对key进行分区的计算,默认Hash分区。

Spill阶段:当内存中的数据量达到一定的阀值的时候,就会将数据写入本地磁盘,在将数据写入磁盘之前需要对数据进行一次排序的操作,如果配置了combiner,还会将有相同分区号和key的数据进行排序。

Merge阶段:把所有溢出的临时文件进行一次合并操作,以确保一个MapTask最终只产生一个中间数据文件。

3、Reducer端shuffle

Copy阶段: ReduceTask启动Fetcher线程到已经完成MapTask的节点上复制一份属于自己的数据。

Merge阶段:在ReduceTask远程复制数据的同时,会在后台开启两个线程对内存到本地的数据文件进行合并操作。

Sort阶段:在对数据进行合并的同时,会进行排序操作,由于MapTask阶段已经对数据进行了局部的排序,ReduceTask只需保证Copy的数据的最终整体有效性即可。

四、Hadoop YARN

1、YARN概述

YARN是一个通用资源管理系统和调度平台

  • 资源管理系统:集群的硬件资源,和程序运行相关,比如内存、CPU等。
  • 调度平台:多个程序同时申请计算资源如何分配,调度的规则(算法)。
  • 通用:不仅仅支持MapReduce程序,理论上支持各种计算程序。YARN不关心你干什么,只关心你要资源,在有的情况下给你,用完之后还我。

可以把Hadoop YARN理解为相当于一个分布式的操作系统平台,而MapReduce等计算程序则相当于运行于操作系统之上的应用程序,YARN为这些程序提供运算所需的资源(内存、CPU等)

Hadoop能有今天这个地位,YARN可以说是功不可没。因为有了YARN ,更多计算框架可以接入到 HDFS中,而不单单是 MapReduce,正是因为YARN的包容,使得其他计算框架能专注于计算性能的提升。

2、YARN架构与组件

ResourceManager(RM):YARN集群中的主角色,决定系统中所有应用程序之间资源分配的最终权限,即最终仲裁者。接收用户的作业提交,并通过NM分配、管理各个机器上的计算资源。

NodeManager(NM):YARN中的从角色,一台机器上一个,负责管理本机器上的计算资源。根据RM命令,启动Container容器、监视容器的资源使用情况。并且向RM主角色汇报资源使用情况

ApplicationMaster(AM):用户提交的每个应用程序均包含一个AM。应用程序内的“老大”,负责程序内部各阶段的资源申请,监督程序的执行情况。

3、核心交互流程

MR作业提交 Client–>RM

资源的申请 MrAppMaster–>RM

MR作业状态汇报 Container(Map|Reduce Task)–>Container(MrAppMaster)

节点的状态汇报 NM–>RM

4、YARM交互整体概述

  1. 客户端申请资源启动运行本次程序的ApplicationMaster
  2. 由ApplicationMaster根据本次程序内部具体情况,为它申请资源,并监控它的整个运行过程,直到运行完成。

5、MR提交YARN交互流程

  1. 用户通过客户端向YARN中ResourceManager提交应用程序(比如hadoop jar提交MR程序)
  2. ResourceManager为该应用程序分配第一个Container(容器),并与对应的NodeManager通信,要求它在这个Container中启动这个应用程序的ApplicationMaster。
  3. ApplicationMaster启动成功之后,首先向ResourceManager注册并保持通信,这样用户可以直接通过ResourceManage查看应用程序的运行状态(处理了百分之几)
  4. AM为本次程序内部的各个Task任务向RM申请资源,并监控它的运行状态。
  5. 一旦 ApplicationMaster 申请到资源后,便与对应的 NodeManager 通信,要求它启动任务。
  6. NodeManager 为任务设置好运行环境后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。
  7. 各个任务通过某个 RPC 协议向 ApplicationMaster 汇报自己的状态和进度,以让 ApplicationMaster 随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。在应用程序运行过程中,用户可随时通过RPC 向 ApplicationMaster 查询应用程序的当前运行状态。
  8. 应用程序运行完成后,ApplicationMaster 向 ResourceManager 注销并关闭自己。

五、YARN资源调度器Scheduler

1、资源调度概述

在理想情况下,应用程序提出的请求将立即得到YARN批准。但是实际中,资源是有限的,并且在繁忙的群集上,应用程序通常将需要等待其某些请求得到满足。

YARN调度程序的工作是根据一些定义的策略为应用程序分配资源

2、调度器策略

1)FIFO Scheduler(先进先出调度器)

先进先出的思想,即先提交的应用先运行。

  • 优势:无需配置、先到先得、易于执行
  • 坏处:任务的优先级不会变高,因此高优先级的作业需要等待不适合共享集群

2)Capacity Scheduler(容量调度器)

允许多个组织共享整个集群资源,通过为每个组织分配专门的队列,然后再为每个队列分配一定的集群资源。

  • 特性优势:层次化的队列设计、容量、保证安全、弹性分配

3)Fair Scheduler(公平调度器)

提供了YARN应用程序公平地共享大型集群中资源的另一种方式。

公平调度可以在多个队列间工作,允许资源共享和抢占。

  • 特性优势:分层队列、基于用户或组的队列映射、资源抢占、保证最小配额、允许资源共享、默认不限制每个队列和用户可以同时运行应用的数量

相关文章:

【大数据】Hadoop MapReduce与Hadoop YARN(学习笔记)

一、Hadoop MapReduce介绍 1、设计构思 1&#xff09;如何对付大数据处理场景 对相互间不具有计算依赖关系的大数据计算任务&#xff0c;实现并行最自然的办法就是采取MapReduce分而治之的策略。 不可拆分的计算任务或相互间有依赖关系的数据无法进行并行计算&#xff01; …...

接口测试文档

接口测试的总结文档 第一部分&#xff1a;主要从问题出发&#xff0c;引入接口测试的相关内容并与前端测试进行简单对比&#xff0c;总结两者之前的区别与联系。但该部分只交代了怎么做和如何做&#xff1f;并没有解释为什么要做&#xff1f; 第二部分&#xff1a;主要介绍为什…...

Ubuntu中不能使用ifconfig命令

​ 问题 打开终端使用如下命令不能运行&#xff1a; ifconfig显示如下错误: 解决方法 在VMware中的虚拟机下面打开“编辑虚拟机设置”&#xff0c;或者在已经打开的虚拟机面板上面打开“虚拟机—设置” 选择网络适配器&#xff0c;选择“NAT模式”&#xff0c;没开机的就…...

BAT020:将文本文档中多行文本拼接为;分隔的单行文本

引言&#xff1a;编写批处理程序&#xff0c;实现将文本文档中多行文本拼接为;分隔的单行文本。 一、新建Windows批处理文件 参考博客&#xff1a; CSDNhttps://mp.csdn.net/mp_blog/creation/editor/132137544 二、写入批处理代码 1.右键新建的批处理文件&#xff0c;点击【…...

安防初识命令【学习笔记】

1、美杜莎爆破 medusa -M ssh -h 192.168.42.135 -u guest -P top1000.txt -t 8 2、passwd文件与shadow文件 root:x:0:0:root:/root:/usr/bin/zsh 用户名&#xff1a;密码&#xff1a;uid&#xff1a;gid&#xff1a;描述性信息&#xff1a;主目录&#xff1a;默认…...

idea 启动出现 Failed to create JVM JVM Path

错误 idea 启动出现如下图情况 Error launching IDEA If you already a 64-bit JDK installed, define a JAVA_HOME variable in Computer > System Properties> System Settings > Environment Vanables. Failed to create JVM. JVM Path: D:\Program Files\JetB…...

凉鞋的 Unity 笔记 108. 第二个通识:增删改查

在这一篇&#xff0c;我们来学习此教程的第二个通识&#xff0c;即&#xff1a;增删改查。 增删改查我们不只是一次接触到了。 在最先接触的场景层次窗口中&#xff0c;我们是对 GameObject 进行增删改查。 在 Project 文件窗口中&#xff0c;我们是对文件&文件夹进行增删…...

angular项目指定端口,实现局域网内ip访问

直接修改package.json文件 "dev": "ng serve --host 0.0.0.0 --port 8080"终端运行npm run dev启动项目。 这里就指定了使用8080端口运行项目&#xff0c;同时局域网内的其他电脑可以通过访问运行项目主机的ip来访问项目 例如项目运行在ip地址为192.168.2…...

解决uniapp里scroll-view横向滚动的问题

一、前言 本以为是一件很简单的事&#xff0c;结果浪费了整整一个上午&#xff0c;并且问题并没有全部解决....后来没办法&#xff0c;用了touchmove模拟的滑动&#xff0c;如果有好的解决方法麻烦告诉我...非常感谢~ 一、问题 其实我想要实现的功能很简单&#xff0c;就是一…...

LeetCode——动态规划(五)

刷题顺序及思路来源于代码随想录&#xff0c;网站地址&#xff1a;https://programmercarl.com 目录 121. 买卖股票的最佳时机 - 力扣&#xff08;LeetCode&#xff09; 122. 买卖股票的最佳时机 II - 力扣&#xff08;LeetCode&#xff09; 123. 买卖股票的最佳时机 III …...

与HTTP相关的各种概念

网络世界 网络世界中最重要的一个名词就是互联网&#xff08;Internet&#xff09;,它以TCP/IP协议族为基础&#xff0c;构建成了一望无际的信息传输网络。而我们通常所说的“上网”&#xff0c;主要就是访问互联网的一个子集——万维网&#xff08;World Wide Web&#xff09…...

CentOS 7 编译安装Boost

1、前提条件 linux平台/CentOS 7 下要编译安装Boost除gcc和gcc-c之外&#xff0c;还需要两个开发库&#xff1a;bzip2-devel 和python-devel &#xff0c;因此在安装前应该先保证这两个库已经安装。 安装指令: yum install bzip2 bzip2-devel bzip2-libs python-devel Cent…...

vue图表制作

Vue.js是一个非常流行的JavaScript框架&#xff0c;可以用于开发交互式Web应用程序。Vue.js的优点之一是它的灵活性和可扩展性。因此&#xff0c;可以使用Vue.js与许多其他库和框架集成&#xff0c;包括图表库。 下面是使用Vue.js制作图表的一些步骤&#xff1a; 1.选择一个适…...

使用 GitHub Action 自动更新 Sealos 集群的应用镜像

在 IT 领域&#xff0c;自动化无疑已成为提高工作效率和减少人为错误的关键。Sealos 作为一个强大的云操作系统&#xff0c;已经为许多企业和开发者提供了稳定可靠的服务。与此同时&#xff0c;随着技术不断发展&#xff0c;集成更多的功能和服务变得尤为重要。考虑到这一点&am…...

windows频繁更新问题解决方案

解决方案&#xff1a;将更新策略增加到无穷大 1.windowsr 输入regedit 2.找到&#xff1a;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings 3.右键新建DWORD32 4.命名&#xff1a;FlightSettingsMaxPauseDays 5.双击&#xff1a;数值数据改为4321 基数&#…...

day05-前后端项目上传到gitee、后端多方式登录接口、发送短信功能、发送短信封装、短信验证码接口、短信登录接口

1 前后端项目上传到gitee 2 后端多方式登录接口 2.1 序列化类 2.2 视图类 2.3 路由 3 发送短信功能 4 发送短信封装 4.0 目录结构 4.1 settings.py 4.2 sms.py 5 短信验证码接口 6 短信登录接口 6.1 视图类 6.2 序列化类 1 前后端项目上传到gitee # 我们看到好多开源项目…...

046:mapboxGL加载天地图路网图+标记(wmts方式)

第046个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中加载天地图路网图+标记(wmts方式)。瓦片中的url地址引用的是天地图的wmts的形式。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共99行)相关AP…...

【ICer的脚本练习】tcl语法熟悉和工具tcl的实例

系列的目录说明请见:ICer的脚本练习专栏介绍与全流程目录_尼德兰的喵的博客-CSDN博客 前言 TCL(Tool Command Language)是一种简单但功能强大的脚本语言,它经常用于自动化任务、测试和快速原型开发。你看这个名字就能知道,这个语言最主要的作用就是用来操作工具,尤其我们…...

uniapp+vue3+ts+uview-plus搭建项目步骤

创建项目 使用Vue3/Vite版&#xff0c;创建以 typescript 开发的工程 下载仓库 DCloud/uni-preset-vue - Gitee.com node版本&#xff1a;v16.18.0 npm版本&#xff1a; v8.19.2 依赖下载 解压之后&#xff0c;在vscode打开 通过终端运行 npm 命令下载依赖&#xff1a;npm ins…...

在PHP中,可以使用不同的加密算法(如MD5、SHA1、SHA256)结合RSA算法进行公钥加密和私钥解密。

下面是使用这三种算法进行加密和解密的示例代码&#xff1a; // 生成RSA密钥对 $keyPair openssl_pkey_new(array(private_key_bits > 2048,private_key_type > OPENSSL_KEYTYPE_RSA, ));// 获取私钥和公钥 openssl_pkey_export($keyPair, $privateKey); $publicKey o…...

5分钟搞定KEPserver V6配置:Java读取西门子PLC数据的保姆级教程

5分钟极速配置KEPserver V6与Java通信&#xff1a;西门子S7-1500数据采集实战指南 当工业现场的PLC数据需要与IT系统集成时&#xff0c;OPC技术栈往往是最直接的选择。但传统OPC配置过程繁琐的文档和复杂的依赖管理&#xff0c;常让工程师在项目初期耗费大量时间在环境搭建上。…...

文件日期更改器:在 Windows 上修改文件日期的完整指南

需要更改文件创建日期或编辑修改时间戳&#xff1f;我们的综合指南揭示了三种有效的文件日期修改方法&#xff0c;其中包括评价最高的文件属性日期修改工具——视频转换器的文件日期修改器。学习专业的文件日期修改技巧&#xff0c;同时确保数据完整性。为什么您可能需要更改文…...

C#安装步骤以及流程易出错提醒修正

C# 开发环境安装步骤 Visual Studio 安装 从 Microsoft 官网 下载 Visual Studio Community&#xff08;免费版本&#xff09;。运行安装程序&#xff0c;选择“使用 C# 的桌面开发”工作负载&#xff0c;确保勾选 .NET SDK 和核心组件。 验证安装 打开命令提示符或 PowerShe…...

DASD-4B-Thinking效果对比:在HumanEval代码生成任务中超越Qwen2.5-7B

DASD-4B-Thinking效果对比&#xff1a;在HumanEval代码生成任务中超越Qwen2.5-7B 1. 为什么这个40亿参数模型值得关注&#xff1f; 你可能已经用过不少大模型&#xff0c;但有没有遇到过这种情况&#xff1a;写一段Python函数时&#xff0c;模型直接给出答案&#xff0c;却跳…...

foobox-cn:foobar2000现代化DUI皮肤配置的终极音乐管理方案

foobox-cn&#xff1a;foobar2000现代化DUI皮肤配置的终极音乐管理方案 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn foobox-cn是为foobar2000播放器设计的现代化默认用户界面&#xff08;DUI&…...

OpenClaw硬件控制实验:ollama-QwQ-32B通过串口操控智能家居

OpenClaw硬件控制实验&#xff1a;ollama-QwQ-32B通过串口操控智能家居 1. 为什么选择OpenClaw做硬件控制 去年冬天的一个深夜&#xff0c;我被空调定时关闭后冻醒的经历&#xff0c;让我开始思考如何让AI真正理解物理世界。传统智能家居App的固定场景模式已经不能满足我的需…...

掌握Calibre电子书管理:从格式转换到高级编辑的完整指南

掌握Calibre电子书管理&#xff1a;从格式转换到高级编辑的完整指南 【免费下载链接】calibre The official source code repository for the calibre ebook manager 项目地址: https://gitcode.com/GitHub_Trending/ca/calibre Calibre是一款功能强大的开源电子书管理器…...

避坑指南:通达信指标加密的4种方法实测,哪种最难被破解?

通达信指标加密技术深度测评&#xff1a;从入门到防破解实战 在量化交易和个性化指标分析领域&#xff0c;通达信作为国内主流证券分析软件&#xff0c;其自定义指标功能一直备受投资者青睐。但随之而来的指标被盗用、滥用问题也让许多开发者头疼不已——一个经过数月验证的高胜…...

告别‘Illegal instruction’:为老旧ARM芯片(如鲲鹏920)定制MongoDB 4.4.9的完整避坑流程

为老旧ARM芯片定制MongoDB 4.4.9的完整避坑指南 当你在国产ARM服务器上部署MongoDB时&#xff0c;是否遇到过Illegal instruction错误&#xff1f;这个问题往往源于硬件与软件版本之间的指令集不匹配。本文将带你深入理解ARM架构的版本差异&#xff0c;并提供一套完整的解决方案…...

ArcGIS核密度分析实战:基于上海市餐饮POI的商业热点识别

1. 核密度分析能帮你做什么&#xff1f; 如果你正在考虑开一家餐厅&#xff0c;或者想了解上海哪些区域餐饮业最发达&#xff0c;核密度分析就是你的好帮手。简单来说&#xff0c;这个技术可以把一堆分散的餐饮店位置数据&#xff0c;变成一张直观的"热度地图"。我去…...