Hadoop2.0 | YARN资源调度
YARN资源调度
YARN容错
ResourceManager
存在单点故障
正在基于ZooKeeper
实现HA
NodeManager
失败后,RM
将失败任务告诉对应的AM
AM
决定如何处理失败的任务
ApplicationManager
失败后,由RM
负责重启
RMAppMaster
会保存已经运行完成的Task
,重启后无需重新运行
YARN资源调度
YARN调度框架
双层调度框架
RM
将资源分配给AM
AM
将资源进一步分配给各个Task
基于资源预留的调度策略
资源不够时,会为Task
预留,直到资源充足
与all or nothing
策略不同(Apache Mesos
)
支持资源抢占模型
资源调度器
FIFO
Fair Scheduler
Capacity Scheduler

调度器对比
FifoScheduler
最简单的调度器,按照先进先出的方式处理应用
CapacityScheduler
FifoScheduler
的多队列版本,每个队列可以限制资源使用量
队列间的资源分配以使用量作排列依据,使得容量小的队列有竞争优势
使得hadoop
应用能够被多用户使用,且最大化整个集群资源的吞吐量
启动容量调度器之后,调度器会从classpath
中加载capacity-scheduler.xml
文件,完成容量调度器的初始化
FairScheduler
多队列,多用户共享资源。使得hadoop
应用能够被多用户公平地共享整个集群资源的调度器
根据队列设定的最小共享量或者权重等参数,按比例共享资源
YARN资源隔离方案
支持内存和CPU
两种资源隔离
内存是一种“决定生死”的资源
CPU
是一种“影响快慢”的资源
内存隔离
基于线程监控的方案
基于Cgroups
的方案
CPU
隔离
默认不对CPU
资源进行隔离
基于Cgroups
的方案
YARN资源调度语义
支持的语义
请求某个特定节点/机架上的特定资源量
将某些节点加入(或移除)黑名单,不再为自己分配这些节点上的资源
请求归还某些资源
不支持的语义
请求任意节点/机架上的特定资源量
请求一组或几组符合某种特质的资源
超细粒度资源
动态调整Container
资源