搜索
搜 索
本版
文章
帖子
用户
图文精华
hadoop-2.6.0+zookeeper-3.4.6+hbase-1.0.0+hive-1.1.0完全分布 ...
首页
Portal
专题
BBS
面试
更多
登录
注册
用户组:游客
主题
帖子
云币
我的帖子
我的收藏
我的好友
我的勋章
设置
退出
导读
淘贴
博客
群组
社区VIP
APP下载
今日排行
本周排行
本周热帖
本月排行
本月热帖
会员排行
About云-梭伦科技
»
专题
›
技术学习(版主发帖区)
›
大数据学习
›
Hadoop|YARN
›
问题解答
›
YARN/MRv2 Resource Manager深入剖析—AM管理
0
1
0
分享
YARN/MRv2 Resource Manager深入剖析—AM管理
fanbells
2014-4-3 08:45:27
发表于
问题解答
[显示全部楼层]
只看大图
阅读模式
关闭右栏
1
10553
本帖最后由 pig2 于 2014-4-3 23:14 编辑
1、
ApplictionMaster管理部分主要由那些服务构成?
2、这些服务是怎样运行的?
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
已有(1)人评论
电梯直达
正序浏览
fanbells
发表于 2014-4-3 08:46:29
本帖最后由 pig2 于 2014-4-3 10:27 编辑
ApplictionMaster管理部分主要由三个服务构成,分别是AMLivelinessMonitor、ApplicationMasterLauncher和ApplicationMasterService,它们共同管理ApplicationMaster的生存周期,接下来我们依次介绍这三个服务。
AMLivelinessMonitor
该服务周期性遍历所有ApplicationMaster,如果一个ApplicationMaster在一定时间(可通过参数yarn.am.liveness-monitor.expiry-interval-ms配置,默认为10min)内未汇报心跳信息,则认为它死掉了,它上面所有正在运行的Container将被置为运行失败(RM不会重新执行这些Container,它只会通过心跳机制告诉对应的AM,由AM决定是否重新执行,如果需要,则AM重新向RM申请资源),AM本身会被重新分配到另外一个节点上(管理员可通过参数yarn.resourcemanager.am.max-retries指定每个ApplicationMaster的尝试次数,默认是1次)执行。
ApplicationMasterLauncher
ApplicationMasterLauncher既是一个服务,也是一个事件处理器,它处理AMLauncherEvent类型的事件,该类型事件有两种,分别是请求启动一个AM的“LAUNCH”和请求清理一个AM的“CLEANUP”。ApplicationMasterLauncher维护了一个线程池,从而能够尽快地处理这两种事件。
如果ApplicationMasterLauncher收到了“LAUNCH”类型的事件,它会与对应的NodeManager通信,要求它启动ApplicationMaster。整个过程比较简单,首先创建一个ContainerManager协议的Client,然后向对应的NodeManager发起连接请求,接着将启动AM所需的各种信息,包括命令,Jar包、环境变量等信息,封装成一个StartContainerRequest对象,然后通过RPC函数ContainerManager. startContainer()发送给对应的NM。
如果ApplicationMasterLauncher收到了“CLEANUP”类型的事件,它会与对应的NodeManager通信,要求它杀死ApplicationMaster。整个过程与启动AM的过程类似。
ApplicationMasterService
ApplicationMasterService负责处理来自ApplicationMaster的请求,主要包括三种请求:注册、心跳和清理,其中,注册是ApplicationMaster启动时发生的行为,请求包中包含AM所在节点,RPC端口号和tracking URL等信息;心跳是周期性 行为,包含请求资源的类型描述、待释放的Container列表等,而AMS则为之返回新分配的Container、失败的Container等信息;清理是应用程序运行结束时发生的行为,ApplicationMaster向RM发送清理应用程序的请求,以回收资源和清理各种数据结构。
ApplicationMasterLauncher启动AM后,AM做的第一件事是向RM注册,这是通过RPC函数AMRMProtocol. registerApplicationMaster()实现的。
AM运行过程中,需要周期性地通过RPC函数AMRMProtocol.allocate()与RM通信,这主要有以下三个作用:1) 请求资源 2)获取新分配的资源 3)形成心跳,告诉RM自己还活着。
AM运行结束后,需要通过RPC函数AMRMProtocol.finishApplicationMaster()告诉RM自己运行结束,可以回收资源(AM所占用的Container)和清理各种数据结果(比如将该AM从AMLivelinessMonitor监控列表中删除。)
原址:
http://dongxicheng.org/mapreduce ... manager-am-manager/
回复
使用道具
举报
显身卡
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
最佳新人
积极上进,爱好学习
发表新帖
fanbells
高级会员
关注
50
主题
154
帖子
10
粉丝
TA的主题
hbase regionserver下线
2014-6-16
hadoop map reduce的tasks.maximum该怎样设置?
2014-4-28
eclipse 运行hadoop出现问题?
2014-4-25
hbase日志中包含的cache信息,求解?
2014-4-16
Storm常见模式——TimeCacheMap
2014-4-12
24小时热文
像高手一样发言:七种常见工作场景的说话之
幕后产品:打造突破式产品思维
副业警钟,新型法律碰瓷发财方式:批量诉讼
Spark机器学习
Spark机器学习算法、源码及实战详解
关闭
推荐
/2
中文版ChatGPT
1.无需魔法 2.提高编程效率 3.提高文档能力
查看 »
新手帮助
新手帮助:注册遇到问题,领取资源,加入铁粉群,不会使用搜索,如何获取积分等
查看 »
意见
反馈