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) ...
随机推荐
- Intellij IDEA14配置
一.下载 官网下载地址:http://www.jetbrains.com/idea/ 目前最新的版本是15,发现15注册比较麻烦,好像需要只能通过联网激活.而网上14的离线注册码一大堆,就下载了14, ...
- js常用操作~~~~将持续更新
1.替换多个模板变量 var s="my javascript is very poor,who can help me?" var reg=/(\w*)my(.*)is(.*)c ...
- [ SHOI 2001 ] 化工厂装箱员
\(\\\) \(Description\) 传送带上按顺序传过来\(N\)个物品,一个有\(A,B,C\)三类. 每次装箱员手里只能至多拿十个,然后将手中三类物品中的一类装箱,才能接着拿或接着装箱, ...
- html5——多媒体(一)
<audio> 1.autoplay 自动播放 2.controls 是否显不默认播放控件 3.loop 循环播放 4.preload 预加载 同时设置autoplay时些属性失效 5.由 ...
- dotnetnuke 7.x登录时不跳到站点设置中的指定页
查源码发现登录按钮有参数,点击跳到登录页或者弹窗登录,真正登录后会根据传参的url反回.因为皮肤对像没有相应参数,所以只能去掉参数.我是用js去的,偷个懒吧.如下所示: <script type ...
- ZfNet解卷积:可视化CNN模型( PythonCode可视化Cifar10)
原文链接:caffe Model的可视化 snapshot: 6000 一个在线可视化小工具:http://blog.csdn.net/10km/article/details/52713 ...
- RHEL7配置中文输入法-智能拼音
RHEL7配置中文输入法-智能拼音 RHEL7.x(CentOS7.x)系统相对之前的6.x系统变化较大,虽然安装时选择了中文环境,但是进入系统后,在控制台及编辑器中仍无法切换输入法进行中文输入. 原 ...
- 零基础到精通Linux,从这篇文章开始
2018年想做Linux运维的人应该如何学习才能快速精通Linux? Linux入门这么简单,为什么很多人学不会? 想要成为一个合格的运维工程师,到底怎么才能从零开始精通Linux? 作为一个运维小白 ...
- Django - Ajax基本内容整理
将原来的请求结果普通字符串,变更为类字典的字符串 从这段代码中,可以看到,对原有函数,进行了一个try ...except....操作,进行异常捕捉,将捕捉过程及结果,存入在初始化的字典中,将字典通过 ...
- MySQL之索引以及正确使用索引
一.MySQL中常见索引类型 普通索引:仅加速查询 主键索引:加速查询.列值唯一.表中只有一个(不可有null) 唯一索引:加速查询.列值唯一(可以有null) 组合索引:多列值组成一个索引,专门用于 ...