【大数据之Hadoop】二十一、MapReduce、HDFS、Yarn配合工作(作业提交全过程)

news2025/1/19 22:25:10

在这里插入图片描述
1-11、26为Yarn;12-17为HDFS写数据流程;18-25、27-31为MapReduce;19-25为Shuffle;32-41为HDFS写数据流程。

(0)MR程序提交到客户端所在的节点,在集群模式中运行MR程序,当运行到主函数的waitForCompletion()函数时创建YarnRunner(本地模式是LocalRunner)。

(1)YarnRunner向ResourceManager申请一个Application运行任务。

(2)RM将该应用程序的资源路径返回给YarnRunner,让YarnRunner把提交的job放到集群路径上。

(3)该程序将运行所需资源提交到HDFS集群路径上,包括split切片信息(控制开启MapTask的数量)、配置参数文件xml(控制任务按照xml里的参数运行)以及jar包(程序代码)。

(4)程序资源提交完毕后,YarnRunner申请运行MrAppMaster。

(5)RM将用户的请求初始化成一个Task任务,然后放到任务队列中排队(任务队列默认是容器)。

(6)空闲NodeManager领取Task任务。

(7)该NodeManager创建容器Container(任务的执行只能发生在容器中,容器中封装了资源),并在容器中启动MRAppmaster进程。

(8)Container从HDFS集群路径上拷贝资源(即切片信息等)到本地。

(9)容器拿到切片信息后,由MRAppmaster向RM 再次申请运行MapTask(切片个数=MapTask个数,有多少切片就申请开启多少MapTask)。

(10)RM将运行MapTask任务分配给NodeManager,NodeManager领取任务并创建容器(MapTask对应的容器有可能在同一个NodeManager节点上),并拷贝cpu、ram和jar包资源。

(11)MRAppMaster向接收到任务的NodeManager发送程序启动命令,NodeManager分别启动MapTask,然后开启YarnChild进程。

(12)MapTask向客户端读数据。

(13)客户端的InputFormat默认使用TextInputFormat,通过DistributedFileSystem分布式文件系统向NameNode请求下载文件,NameNode通过查询权限和元数据,找到文件块所在的DataNode地址。

(14)NameNode返回目标文件的元数据。

(15)客户端创建流,通过流对象挑选一台DataNode服务器,请求读取数据(串行读取)。(就近原则,然后随机;同时需要考虑当前节点的负载均衡,判断数据流量,当达到一定的量级时可用先访问其他节点)

(16)DataNode开始传输数据给客户端(从磁盘里面读取数据输入流,以Packet为单位来做校验),客户端以Packet为单位接收,先在本地缓存。

(17)数据以<k,v>的形式传入到MapTask。

(18)进入Mapper阶段,将解析出的key/value交给用户编写map()函数处理,并产生一系列新的key/value。

(19)当数据处理完成后,一般会调用OutputCollector.collect()输出结果,将生成的key/value分区(调用Partitioner),并写入一个环形内存缓冲区中。

(20)缓冲区内部对数据分区存储,当数据进入到环形缓冲区时就进行分区标记(会根据分区进入到不同的reduce),缓冲区一侧存数据,一侧存索引,当数据达到80%时进行反向溢写。溢写之前需要对分区中的数据进行排序(对索引使用快速排序)。

(21)当环形缓冲区满后,产生大量的溢写文件,先要对数据进行一次本地排序,MapReduce会将数据写到本地磁盘上,生成临时文件。

(22)当所有数据处理完成后(即溢写完成后),MapTask对所有临时文件(溢写文件)归并排序。

(23)对数据进行合并操作。

(24)对分区的数据进行压缩。

(25)将压缩好的数据安装分区写入磁盘。

(26)MrAppMaster向RM再次申请容器运行ReduceTask程序。

(27)ReduceTask拉取相应分区数据先存储到内存。

(28)内存不够时溢出到磁盘。

(29)针对内存和C盘中的每个map输出的数据进行归并排序。

(30)按照相同的key分组。

(31)对于相同的key的数据进入到同一个reduce()处理函数。

(32)将计算结果通过OutputFormat(输出)的RecordWriter调用write()写出数据。

(33)客户端通过分布式文件系统向NameNode请求上传文件,NameNode检查权限,以及目标文件是否已存在,父目录是否存在。

(34)NameNode响应是否可以上传。

(35)客户端请求第一个Block返回上传块的DataNode服务器。

(36)NameNode根据节点是否可用、负载均衡以及哪个节点距离最近等因素返回DataNode节点。

(37)客户端创建流,通过FSDataOutputStream流请求第一个DataNode节点上传数据)。

(38)dn1收到请求会继续调用dn2,将这个通信管道建立完成。(以Packet为单位建立管道)。

(39-40)FSDataOutputStream流建立一个ACK队列用于接收应答,由dn逐层应答,只有都应答成功才会上传一个块。

(41)客户端开始往dn1上传第一个块Block(先从磁盘读取数据放到一个本地内存缓存),以Packet为单位,dn1收到一个Packet就会传给dn2;dn1每传一个packet会放入一个应答队列等待应答。当一个Block传输完成之后,客户端再次请求NameNode上传第二个Block的服务器。

(42)ReduceTask程序运行完毕后,MrAppMaster会向RM申请注销自己,释放容器等资源。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/469416.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数学建模第七天:数学建模算法篇之插值及MATLAB实现

目录 一、前言 1、引例 2、拟合定义 3、拟合与插值的关系 二、拟合 1、线性最小二乘法求解 ①思路 ②解法 2、MATLAB对线性最小二乘拟合的实现 ①函数说明 ②求解例题 3、MATLAB实现非线性曲线拟合 ①lsqcurvefit函数 ②代码求解 4、MATLAB实现非线性最小二乘拟…

华为2023暑期笔试(2-2)——最近最少使用(LRU, Least recently used)缓存算法

目录 题目内容解答要求&#xff08;解答要求限制了只能使用LRU&#xff09;输入描述样例思路代码 题目内容 你是一名网络工程师&#xff0c;你正在为一家云计算公司开发一个虚拟机管理系统。你的系统需要为每个虚拟机分配一个唯一的ID&#xff0c;用来标识和通信。为了实现这个…

C++基础demo(C++入门基础案例)

C入门基础案例学习与了解 demo16 计算年份是否为闰年&#xff08;各种运算符结合&#xff09;demo17 打印ASCII码表demo18 求完数demo19 密码验证&#xff08;if……else&#xff09;demo20 图书管理&#xff08;if…else if…else&#xff09;demo21 信号灯&#xff08;和--&a…

python中使用ctypes库调用使用MMDeploy C++ SDK编译得到的dll文件时,出现WinError126的解决方法

之前&#xff0c;通过以下两篇文章&#xff0c;着重介绍了&#xff0c;使用openMMLab开发的MMDeploy库对MMxx系列仓库训练得到的权重pth转换得到的onnx&#xff0c;并分别使用python SDK和C SDK进行调用的详细步骤&#xff1a; 使用MMDeploy&#xff08;预编译包&#xff09;转…

Enterprise:如何在 Elastic 企业搜索引擎中添加对更多语言的支持

作者&#xff1a;Ioana-Alina Tagirta Elastic App Search 中的引擎&#xff08;engines&#xff09;使你能够索引文档并提供开箱即用的可调搜索功能。 默认情况下&#xff0c;引擎支持预定义的语言列表。 如果你的语言不在该列表中&#xff0c;此博客将说明如何添加对其他语言…

RabbitMQ笔记

一、MQ与RabbitMQ概述 1. MQ简述 MQ&#xff08;Message Queue&#xff09;消息队列&#xff0c;是基础数据结构中 “先进先出” 的一种数据结构&#xff0c;也是在消息的传输过程中保存消息的容器&#xff08;中间件&#xff09;&#xff0c;多用于分布式系统之间进行通信。 …

[Pandas] 设置DataFrame的index索引起始值为1

导入数据 import pandas as pddf pd.DataFrame([[liver,E,89,21,24,64],[Arry,C,36,37,37,57],[Ack,A,57,60,18,84],[Eorge,C,93,96,71,78],[Oah,D,65,49,61,86]], columns [name,team,Q1,Q2,Q3,Q4]) df 上述DataFrame中的index索引列默认是从0开始的&#xff0c;那么我们…

【Spark】Spark是什么?能干什么?有什么特点?

一、什么是Spark 官网&#xff1a;http://spark.apache.org Apache Spark™ is a multi-language engine for executing data engineering, data science, and machine learning on single-node machines or clusters. Spark是一种快速、通用、可扩展的大数据分析引擎&#xf…

MATLAB连续LTI系统的时域分析(十)

目录 1、实验目的&#xff1a; 2、实验内容&#xff1a; 1、实验目的&#xff1a; 1&#xff09;掌握利用MATLAB对系统进行时域分析的方法&#xff1b; 2&#xff09;掌握连续时间系统零输入响应的求解方法&#xff1b; 3&#xff09;掌握连续时间系统零状态响应、冲激响应和…

AD9739配置解析与数据输出指南

1 概述 本文用于AD9737芯片的配置使用情况&#xff0c;以及数据输出的格式说明情况&#xff0c;数据速率的计算情况等。 AD9739是ADI公司的一款14BIT&#xff0c;可达2.5GSPS采样率的DAC芯片。 2 AD9739的性能 支持的输入数据速率&#xff1a;1.6GSPS TO 2.5GSPS. industry lea…

基于3D渲染和基于虚拟/增强现实的IIoT原理的数字孪生平台的方案论文阅读笔记

基于3D渲染和基于虚拟/增强现实的IIoT原理的数字孪生平台的方案论文阅读笔记 论文原文链接&#xff1a;https://ieeexplore.ieee.org/abstract/document/9039804 本笔记对部分要点进行了翻译和批注&#xff0c;原文和翻译可参考链接阅读&#xff0c;此处不进行完整翻译。 论文…

【服务网格】Service Mesh 是什么?为我们解决了什么问题?

文章目录 背景一、Service Mesh 介绍Service Mesh的定义Service Mesh 诞生 二、Service Mesh 解决的问题三、Service Mesh 的原理四、Service Mesh具体是怎么实现的&#xff1f;Istio是什么&#xff1f;istio架构和主要功能Istio 1.5.1 性能总结Istio与Kubernetesistio的实战案…

四、MyBatis获取参数值的两种方式(重点)

文章目录 四、MyBatis获取参数值的两种方式&#xff08;重点&#xff09;4.1 单个字面量类型的参数4.2 多个字面量类型的参数4.3 map集合类型的参数4.4 实体类类型的参数4.5 使用Param标识参数 四、MyBatis获取参数值的两种方式&#xff08;重点&#xff09; MyBatis获取参数值…

IP-GUARD屏幕记录能实现平时不记录,特定操作触发记录吗?

支持触发性屏幕记录。部分策略有选项“记录屏幕”,勾选后,策略触发时,会自动记录客户端当时的屏幕情况,记录次数和间隔可通过配置修改。 所有包含了记录屏幕的策略有: 应用程序、上网浏览、流量控制、网络控制、邮件控制、IM传送控制、上传控制、文档控制、打印控制、敏感…

深浅拷贝,类型检测及继承面试题

01 对象的深/浅拷贝 1.1 变量的存储 基本类型&#xff1a;基本类型的值存在栈内存中 引用类型&#xff1a; 引用类型的地址存储在栈内存中&#xff0c;他的值存储在堆内存中&#xff0c;通过指针(地址)连接 1.2 变量拷贝 基本类型&#xff1a;基本类型拷贝的是值 引用类型…

达梦数据库中,如何设置表的访问控制权限?

在工作中&#xff0c;大家都会遇到这样的场景&#xff0c;出于对数据库访问安全的考虑&#xff0c;对于某些用户我们不想让他们看到全库的表&#xff0c;只想给他们特定表的访问权限。那么在DM数据库中我们该如何去配置相应的权限呢&#xff1f; 我们下面来进行详细解析。 我们…

buuctf6

目录 [ACTF2020 新生赛]BackupFile [RoarCTF 2019]Easy Calc 利用PHP的字符串解析特性Bypass: http走私攻击 来首歌吧 荷兰宽带数据泄露​编辑 面具下的flag [ACTF2020 新生赛]BackupFile 1.打开环境 查看源代码得不到任何想要的信息&#xff0c;使用目录扫描来得到我们…

关于秒杀系统的一系列问题

阻塞队列怎么么实现&#xff1f;超卖问题&#xff1f;整体怎么实现&#xff1f; 5 设计一个秒杀系统 特点&#xff1a;高并发&#xff0c;请求量远大于库存量&#xff0c;只有少数能成功&#xff1b;逻辑比较简单&#xff0c;下单减库存&#xff1b; 设计理念&#xff1a;**限…

ESP8266基于Lua开发点灯示例

ESP8266基于Lua开发点灯示例 ✨基于ESPlorer IDE&#xff1a;https://github.com/4refr0nt/ESPlorer/releases&#x1f527;固件烧录工具&#xff1a;NodeMCU-PyFlasher&#x1f33f;esp8266烧录工具下载&#xff1a;https://github.com/marcelstoer/nodemcu-pyflasher/release…

LabVIEW CompactRIO 开发指南2 CompactRIO软件架构

第一章 CompactRIO软件架构 几乎所有的CompactRIO系统都至少有三个顶层VIs在三个不同的目标上异步执行:FPGA、实时操作系统(RTOS)和主机PC。如果开始软件开发时没有某种架构或流程图可供参考&#xff0c;那么可能会发现跟踪所有软件组件和通信路径是具有挑战性的。拥有一个在…