Yarn的资源调度与erlang进程调度二三事
Yarn资源调度器
1、Capacity scheduler
设计目的:以队列为单位划分资源,旨在让分布式集群资源被多用户共享,被多application共享,不同队列间可以动态迁移资源,避免资源被单个应用或单个用户独占,提高集群资源吞吐量和利用率。
核心思想:传统多个独立集群各占一组机器资源以备不时之需,拥有各自的管理开销,这通常导致比较差的资源利用率和极大的管理开销,capacityscheduler通过一种弹性组织方式为各队列资源构建一个共同基金,然后根据他们对资源的需求,跨资源队列来共享资源,即一个队列中空闲的资源可以被另一个“忙碌”的队列使用。
特性:
(1)资源容量保证
从某种角度说,队列实现了一种资源的划分,所有的应用都会被指定到特定的队列,这些应用所能使用到的资源受到队列所拥有资源的限制,理员可以配置soft limits 或者optional hard limits来限制队列所拥有的资源。
(2)层次化的队列
层次化的队列支持在一个组织内子队列的优先共享资源,从而提供了更多的控制和预测的能力。
2、Fair Scheduler与Capacity Scheduler不同之处
a、资源公平共享:在每个队列中,Fair Scheduler可选择按照FIFO、Fair或DRF策略为应用程序分配资源。Fair策略即平均分配,默认情况下,每个队列采用该方式分配资源
b、支持资源抢占:当某个队列中有剩余资源时,调度器会将这些资源共享给其他队列,而当该队列中有新的应用程序提交时,调度器要为它回收资源。为了尽可能降低不必要的计算浪费,调度器采用了先等待再强制回收的策略,即如果等待一段时间后尚有未归还的资源,则会进行资源抢占;从那些超额使用资源的队列中杀死一部分任务,进而释放资源
c、负载均衡:Fair Scheduler提供了一个基于任务数的负载均衡机制,该机制尽可能将系统中的任务均匀分配到各个节点上。此外,用户也可以根据自己的需求设计负载均衡机制
d、调度策略灵活配置:Fiar Scheduler允许管理员为每个队列单独设置调度策略(当前支持FIFO、Fair或DRF三种)
e、提高小应用程序响应时间:由于采用了最大最小公平算法,小作业可以快速获取资源并运行完成
Erlang进程调度
Erlang进程调度是抢占式调度,即为保证进程间的公平调度,给每个进程分配一定数量的reduce,每调度一次reduce减1,当reduce数量减到0时将不会被调度,在调度过程中一旦cpu时间片到,Erlang调度器不管当前进程是否执行完,会强行将cpu从该进程分离出来供下一个被调度到的进程使用。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。