YARN ResourceManager调度器的分析

YARN是Hadoop新版中的资源控制框架。本文旨在深入剖析ResourceManager的调度器,探讨三种调度器的设计侧重,最后给出一些配置建议和参数解释。
本文分析基于CDH4.2.1。调度器这个部分目前还在快速变化之中。例如,CPU资源分配等特性在不就的将来就会加入。
为了方便查阅源代码,原代码位置使用[类名:行号]方式表示。
名词解释:
ResourceManager:以下简称RM。YARN的中控模块,负责统一规划资源的使用。
NodeManager:以下简称NM。YARN的资源结点模块,负责启动管理container。
ApplicationMaster:以下简称AM。YARN中每个应用都会启动一个AM,负责向RM申请资源,请求NM启动container,并告诉container做什么事情。
Container:资源容器。YARN中所有的应用都是在container之上运行的。AM也是在container上运行的,不过AM的container是RM申请的。
1.RM中的调度器
ResourceManager是YARN资源控制框架的中心模块,负责集群中所有的资源的统一管理和分配。它接收来自NM的汇报,建立AM,并将资源派送给AM。整体的RM的框架可以参考:RM总体架构
 


最初的hadoop的版本只有FifoScheduler(先进先出调度器)。当Hadoop集群在大规模使用的时候,如何整合资源和分配资源就是一个迫切的需求。对此,Yahoo!和facebook先后开发了CapacityScheduler(容量调度器)和FairScheduler(公平调度器)。在新版本中,这两个调度器在保持核心算法的基础上,也被重新开发了一次。(实际上所有整个YARN的代码都是重写的…)
2.调度器的接口
首先来了解一下调度器的工作方式和对外暴露的接口:[ResourceScheduler:36]
一个完整的调度器在内存中都会维护一个队列,应用,NM,Container的关系。同时,一个调度器也是一个事件处理器,通过RM的异步的事件调用机制知晓外部的发生的事情。要跟外部交互也要发送相应的事件。调度器一共要处理6个调度事件。

0 个评论

要回复文章请先登录注册