Superior Scheduler学习心得 原创


1、组件介绍:

1-整体系统架构和组件的位置

YarnSuperir scheduler是为了和Hadoop DRM系统一起工作而专门设计的,类似于Yarn现有的开源Fair schedulerCapacity scheduler,Superior Scheduler遵循着Yarn Scheduler的插件接口,与Yarn RM组件一起提供资源调度功能,它有两个主要的组件:

1Superior Yarn Scheduler Engine

通用的调度引擎,旨在支持更广泛的场景,包括大数据、云计算和集装箱编配等。这个组件提供通用的资源建模、分配请求建模。它还提供了大量的内置先进的调度策略,包括多租户在多个资源池、基于用户共享,多个维度调度,预定,数据意识和技术意识调度,和affinity/anti-affinity调度等。Superior Scheduling Enginehadoop的一个独立的模块。它可以通过集成插入不同的DRM系统。

2Superior Yarn Scheduler Plugin

Yarn RMsuperior scheduling engine模块之间的一座桥梁。它实现了完整的YARN scheduling pluginYARN RM的接口。它还使用Superior Scheduling Engine接口事件和数据传递给Superior并拿回分配决策。Superior YARN scheduling plugin利用现有的YARN Web 服务接口和来自client端的请求响应。Superior的一些特定特性只能通过RESTful接口暴漏出来。比如,队列控制(打开/关闭/活动/激活),或查询等待分配请求的详细信息,包括等待容器总数和原因等。

 

 2HPSE的内部结构:

2-High-Performance Scheduler EngineHPSE

 

3-PluginEngine的内部结构

Yarn Plugin

(1)Yarn Plugin Interface:全面实施的入口接口,消息都是从这个接口进入Superior scheduler的。

(2)Superior Web Service:为用户提供RESTful,用于为用户提供特定特性的接口。

(3)Local Data Store:本地数据存储,用于保持Yarn RM的一些查询具体数据结构的问题,如AM尝试的申请行为和节点的拉起。

(4)Engine call back:调度引擎的例行回复,勇于接受来自调度引擎分配和抢占的调度结果

Superior scheduler Engine:

(1)Engine interfaceSuperior Scheduler Engine的接口,用于接收来自Plugin的信息。

(2)RM:维护资源池、资源、跟踪总容量和可利用的资源。

(3)Queue Manager:管理队列层次结构和维护所有分配对象的引用。

(4)Queue Policy Manager:管理策略树的不同实例。

(5)Allocation Manager:管理全部分配、资源请求的要求,指定分配的策略等等。

(6)User Manager:在队列中管理与用户相关的策略。

(7)Scheduler Thread:继续监听队列要求,保障队列的请求得到响应。

 

3Superior SchedulerOther Scheduler工作时的区别:

Open-source Scheduler基于节点匹配算法(节点心跳更新触发调度找到最高优先级容器请求),由于调度程序没有可用资源的全局视图,因此很难对调度器进行优化,例如无论是否繁忙,开源调度器都需要通过延迟调度来进行数据的局部性集群调度,需要保留资源时也十分困难,因为可能有其他节点有足够的资源为高优先级容器服务时,调度器不知道,寻找节点时的调度方法为“最先满足”。

       Superior Scheduler使用一个资源请求调度中心(调度器和调度线程),检视所有的任务请求和资源情况后,优先处理高优先级的请求,根据请求的属性找到匹配的资源,大大提高了调度的效率,拥有单独的线程处理调度事件,减少心跳频率,降低心跳风暴发生的可能,基于集合的算法快读到达最好位置。寻找节点的方法是寻找所有的节点和考虑“最合适的”。

 

4-资源分配的方法比较

通过图4可以看到,开源调度器工作时,  RM通过心跳获取资源信息,扫描等待工作的队列后,优先匹配最先满足资源条件的工作,这会导致资源的浪费。(个人理解:如工作需要2G内存,该节点资源有8G内存,但是判断时发现2G的任务可以在节点内跑,故直接分配。)

 

Superior调度器工作时,RM通过心跳将所有调度器节点状态存放在映射中,然后专用调度线程检查所有等待工作的队列,根据各个工作需要的资源量去映射中寻找最匹配的资源节点,将其分配过去,非常节约资源和时间。

 

4Scheduler Thread 专用调度线程:

开源的Yarn调度器默认情况下使用基于心跳的调度,基本上YarnNodeManager会周期性的发送心跳信息到YarnResourceManager,他们生成NODE_UPDATA事件到Yarn的调度器,这些事件主要包括调度程序需要处理容器的完成任务状态,处理完毕后,开源的调度器开始协调调度在同一个线程里的节点,由于这里只有一个线程来操作所有节点的更新和应用程序的提交事件,当线程花费时间在调度程序上时,它无法同时处理过程节点更新事件,这使得这些事件在大型的集群环境下堆积起来,为了解决这些堆积的问题,有一个典型的解决办法是减缓心跳发送的间隔时间和控制心跳的请求量。这种设计可能会牺牲集群的利用率存在潜在的缺点。由于Container完成事件的同时无法通知Yarn调度器,可以人为的延迟调度的过程以分配新的Container去使用资源。

1、从节点更新事件处理分离出调度程序,使事件处理执行的更快。专用的调度线程去处理周期性的调度
2
、设计细粒度锁定和复制“热点”数据区域去提高所有数据更新和调度程序的并行度
3
、高性能的调度程序算法在去减少极端条件下的搜索空间

 

以上是自己对Superior Scheduler的一点点学习心得,如有错误欢迎大家指正,谢谢

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值