分享

YARN的 Resource Manager的作用

阅读本文首先知道什么是YARN,如果不清楚,可以查看为什么会产生yarn,它解决了什么问题,有什么优势
可以带着下面问题来阅读本文:
1.YARN通过什么来负责管理和分配集群中资源?
2.ResourceManager有几部分组成?
3.管理员通过什么服务来管理集群?
4.集群默认多长时间未汇报心跳,则认为其死掉?
5.ApplicationACLsManager有几种权限,查看主要查看什么,修改,主要修改什么?
6.ResourceScheduler在YARN中的位置?

在YARN中,ResourceManager负责集群中所有资源的统一管理和分配,它接收来自各个节点(NodeManager)的资源汇报信息,并把这些信息按照一定的策略分配给各个应用程序(实际上是ApplicationManager)。


Hadoop-YARN-infrastructure.jpg

ResourceManager主要由以下几个部分组成:

用户交互
YARN分别针对普通用户,管理员和Web提供了三种对外服务,分别对应ClientRMService、AdminService和WebApp:
ClientRMService
ClientRMService是为普通用户提供的服务,它会处理来自客户端各种RPC请求,比如提交应用程序、终止应用程序,获取应用程序运行状态等。
AdminService
YARN为管理员提供了一套独立的服务接口,以防止大量的普通用户请求使管理员发送的管理命令饿死,管理员可通过这些接口管理集群,比如动态更新节点列表,更新ACL列表,更新队列信息等。
WebApp
为了更加友好地展示集群资源使用情况和应用程序运行状态等信息,YARN对外提供了一个Web 界面

NM(NodeManager)管理
NMLivelinessMonitor
监控NM是否活着,如果一个NodeManager在一定时间(默认为10min)内未汇报心跳信息,则认为它死掉了,会将其从集群中移除。
NodesListManager
维护正常节点和异常节点列表,管理exlude(类似于黑名单)和inlude(类似于白名单)节点列表,这两个列表均是在配置文件中设置的,可以动态加载。
ResourceTrackerService
处理来自NodeManager的请求,主要包括两种请求:注册和心跳,其中,注册是NodeManager启动时发生的行为,请求包中包含节点ID,可用的资源上限等信息,而心跳是周期性 行为,包含各个Container运行状态,运行的Application列表、节点健康状况(可通过一个脚本设置),而ResourceTrackerService则为NM返回待释放的Container列表、Application列表等。

AM(ApplicationManager)管理
AMLivelinessMonitor
监控AM是否活着,如果一个ApplicationMaster在一定时间(默认为10min)内未汇报心跳信息,则认为它死掉了,它上面所有正在运行的Container将被认为死亡,AM本身会被重新分配到另外一个节点上(用户可指定每个ApplicationMaster的尝试次数,默认是1次)执行。
ApplicationMasterLauncher
与NodeManager通信,要求它为某个应用程序启动ApplicationMaster。
ApplicationMasterService
处理来自ApplicationMaster的请求,主要包括两种请求:注册和心跳,其中,注册是ApplicationMaster启动时发生的行为,包括请求包中包含所在节点,RPC端口号和tracking URL等信息,而心跳是周期性 行为,包含请求资源的类型描述、待释放的Container列表等,而AMS则为之返回新分配的Container、失败的Container等信息。

Application管理
ApplicationACLsManager
管理应用程序访问权限,包含两部分权限:查看和修改,查看主要指查看应用程序基本信息,而修改则主要是修改应用程序优先级、杀死应用程序等。
RMAppManager
管理应用程序的启动和关闭。
ContainerAllocationExpirer
YARN不允许AM获得Container后长时间不对其使用,因为这会降低整个集群的利用率。当AM收到RM新分配的一个Container后,必须在一定的时间(默认为10min)内在对应的NM上启动该Container, 否则,RM会回收该Container。

安全管理
ResourceManage自带了非常全面的权限管理机制,主要由ClientToAMSecretManager、ContainerTokenSecretManager、ApplicationTokenSecretManager等模块完成。

资源分配
ResourceScheduler
ResourceScheduler是资源调度器,它按照一定的约束条件(比如队列容量限制等)将集群中的资源分配给各个应用程序,当前主要考虑内存资源,在3.0版本中将会考虑CPU(https://issues.apache.org/jira/browse/YARN-2)。ResourceScheduler是一个插拔式模块,默认是FIFO实现,YARN还提供了Fair Scheduler和Capacity Scheduler两个多租户调度器。





来自群组: Hadoop技术组

已有(1)人评论

跳转到指定楼层
quguiliang 发表于 2016-1-1 18:27:52
学习中,赞一个
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条