Hadoop - MapReduce MRAppMaster-剖析
而YARN出现之后。资源管理模块则交由YARN实现,这样为了让MapReduce框架执行在YARN上。仅须要一个ApplicationMaster组件完毕作业控制模块功能就可以,其他部分,包含编程模型和数据处理引擎等,可直接採用MRv1原有的部分。
作业的每一个任务资源需求可描写叙述为5元组:
它维护了一个作业的状态机,以实现异步执行各种作业相关的操作。
当MRApMaster出现问题时。YARN会将其又一次调度到还有一个节点上。
未了避免又一次计算。MRAppMaster首先从HDFS上读取上次执行产生的日志,以恢复已经完毕的任务,进而可以仅仅执行尚未执行完毕的任务。
在YARN中。NodeManager作为一种组合服务模式。同意动态载入应用程序暂时须要的附属服务,利用这一特性,YARN将Shuffle HTTP Sever组成一种服务,以便让各个NodeManager启动时载入它。
ApplicationMaster获取到资源后,与相应的NodeManager通信以启动任务。
步骤3 ApplicationMaster首先向ResourceManager注冊。这样用户能够直接通过ResourceManage查看应用程序的执行状态,然后它将为各个任务申请资源。并监控它们的执行状态。直到执行结束,即反复步骤4~7。
步骤4 ApplicationMaster採用轮询的方式通过RPC协议向ResourceManager申请和领取资源。
步骤5 一旦ApplicationMaster申请到资源后,ApplicationMaster就会将启动命令交给NodeManager,要求它启动任务。启动命令里包括了一些信息使得Container能够与Application Master进行通信。
步骤6 NodeManager为任务设置好执行环境(包含环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过执行该脚本启动任务(Container)。
步骤7 在Container内执行用户提交的代码,各个Container通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的执行状态,从而能够在任务失败时又一次启动任务。
步骤8 在应用程序执行过程中,用户可随时通过RPC向ApplicationMaster查询应用程序的当前执行状态。
步骤9 应用程序执行完毕后。ApplicationMaster向ResourceManager注销并关闭自己
Task可能顺次启动多个执行实例,比方第一个执行实例失败了,则另起一个新的实例又一次计算,直到这一份数据处理完毕或者尝试次数达到上限。
一个任务可能存在多次执行尝试。每次执行尝试被称为一个“执行实例”,Task状态机负责管理这些执行实例。Task状态机由TaskImpl实现。
须要注意的是,在某一个时刻,一个任务可能有多个执行实例,且可能存在执行失败的实例。可是仅仅要有一个实例执行成功,则意味着该任务执行完毕。
各个任务执行实例需定期向MRAppMaster汇报进度和状态,否则MRAppMaster觉得该任务处于僵死状态。会将它杀死,每次汇报均会触发一个TA_UPDATE事件。
用户提交的作业被分解成Map Task和Reduce Task后,这些Task所需的资源统一由ContainerAllocator模块负责从ResourceManager中申请,而一旦ContainAllocator得到资源后,需採用一定的策略进一步分配给作业的各个任务。
比如:
Task和 Reduce Task。
正由于如此。MRv1的程序与YARN中的MapReduce程序全然兼容。
当前MRAppMaster採用了任务级别的恢复机制,即以任务为基本单位进行恢复,这样的机制是基于事务型日志完毕作业恢复的,它仅仅关注两种任务:执行完毕的任务和未完毕的任务。作业执行过程中,MRAppMaster会以日志的形式将作业以及状态记录下来,一旦MRAppMaster重新启动,则可从日志中恢复作业的执行状态。
Avro是一个数据序列化系统,通经常使用于支持大批数据交换和跨语言RPC的应用。
因此。在最简单的情况下。现有的MapReduce应用仍然能照原样执行(须要又一次编译),YARN仅仅只是能让开发者更精
确地指定运行參数。
MapRecuce On YARN的执行时环境由YARN与ApplicationMaster构成,这样的新颖的执行时环境使得MapReduce能够与其它计算框架执行在一个集群中,从而达到共享集群资源、提高资源利用率的目的。
随着YARN的程序与完好,MRv1的独立执行模式将被MapRedcue
On YARN代替。
Hadoop - MapReduce MRAppMaster-剖析的更多相关文章
- Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster
自己搭建了一套伪分布的大数据环境,运行Hadoop包中自带的示例时,出现如下错误: 错误: 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMas ...
- 关于hadoop3.x MR报错:找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster
用的apache Hadoop3.X,今天运行MR报错: 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster 关键需要配置两个配置:ma ...
- Hive进行数据统计时报错:org.apache.hadoop.mapreduce.v2.app.MRAppMaster: Error starting MRAppMaster
报错详情: 2020-04-09 22:56:58,827 ERROR [Listener at 0.0.0.0/45871] org.apache.hadoop.mapreduce.v2.app.M ...
- Yarn 踩坑 : Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster
原因:yarn-site.xml 中,yarn.application.classpath 未配置 解决:其中 hadoop 版本对应更改 <property> <name>y ...
- hadoop3.1.1:找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster
yarn执行MapReduce任务时,找不到主类导致的 解决: 1.在命令行输入:hadoop classpath [hadoop@localhost ~]$ hadoop classpath /da ...
- Hadoop MapReduce 一文详解MapReduce及工作机制
@ 目录 前言-MR概述 1.Hadoop MapReduce设计思想及优缺点 设计思想 优点: 缺点: 2. Hadoop MapReduce核心思想 3.MapReduce工作机制 剖析MapRe ...
- hadoop MapReduce Yarn运行机制
原 Hadoop MapReduce 框架的问题 原hadoop的MapReduce框架图 从上图中可以清楚的看出原 MapReduce 程序的流程及设计思路: 首先用户程序 (JobClient) ...
- hadoop MapReduce
简单介绍 官方给出的介绍是hadoop MR是一个用于轻松编写以一种可靠的.容错的方式在商业化硬件上的大型集群上并行处理大量数据的应用程序的软件框架. MR任务通常会先把输入的数据集切分成独立的块(可 ...
- Hadoop MapReduce执行过程详解(带hadoop例子)
https://my.oschina.net/itblog/blog/275294 摘要: 本文通过一个例子,详细介绍Hadoop 的 MapReduce过程. 分析MapReduce执行过程 Map ...
- Hadoop Mapreduce分区、分组、二次排序过程详解[转]
原文地址:Hadoop Mapreduce分区.分组.二次排序过程详解[转]作者: 徐海蛟 教学用途 1.MapReduce中数据流动 (1)最简单的过程: map - reduce (2) ...
随机推荐
- Mysql(Innodb)如何避免幻读
Mysql(Innodb)如何避免幻读 有意思 MySQL InnoDB支持三种行锁定方式: 行锁(Record Lock):锁直接加在索引记录上面,锁住的是key. 间隙锁(Gap Lock):锁定 ...
- tomcat生成catalina.out文件
生成catalina.out方法 导语:本文为Windows下生tomcat将控制台信息输出到catalina.out文件 且 保证能实时查看日志文件的方法. 一.创建catalina.out 1. ...
- mysql索引初认识
mysql> use mysql; Database changed mysql> show index from user; +-------+------------+-------- ...
- JS——鼠标在盒子中的坐标
核心思想: 1.复杂版本:鼠标pageX.pageY的值减去盒子距离顶端的offsetLeft.offsetTop值就是鼠标在盒子中的坐标 2.简单版本:offsetX.offsetY就可获取鼠标相对 ...
- 【译】x86程序员手册19-6.3.2数据访问的约束
6.3.2 Restricting Access to Data 数据访问的约束 To address operands in memory, an 80386 program must load ...
- javascript的严格模式:use strict
ECMAscript 5添加的运行模式,禁止一些非标准.不安全的操作. <script> "use strict"; console.log("这是严格模式. ...
- HDU_1158_Employment Planning_dp
Employment Planning Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- ASLR(Address space layout randomization)地址空间布局随机化
/********************************************************************* * Author : Samson * Date ...
- unittest 是什么?怎么用?
unittest单元测试框架详解 https://www.cnblogs.com/fighter007/p/8245063.html unittest最详细的解说 https://www.cnblog ...
- join 和 left join 和 right join的区别?
join等价于 inner join 是内连接 ,返回两个表都有的符合条件的行. left join 是左连接,返回坐表中所有的行以及右表中符合条件的行. right join右连接,是返回右表中所有 ...