随着Hadoop版本的演化,Fair Scheduler和Capacity Scheduler的功能越来越完善,包括层级队列组织方式、资源抢占、批量调度等,也正因如此,两个调度器同质化越来越严重,目前看了,两个调度器从设计到支持的特性等方面非常接近,而由于Fair Scheduler支持多种调度策略,现在看来,可以认为Fair Scheduler具备了Capacity Scheduler具有的所有功能。
下表从多个方面对比了Hadoop 2.0(YARN)中这两个调度器的异同,通过这个表读者能更好地理解Capacity Scheduler与Fair Scheduler的相同点和不同点。
其中,FIFO、FAIR和DRF分别是指先来先服务、公平调度和主资源公平调度,具体含义如下:
FIFO:先按照优先级高低调度,如果优先级相同,则按照提交时间先后顺序调度,如果提交时间相同,则按照(队列或者应用程序)名称大小(字符串比较)调度;
FAIR:按照内存资源使用量比率调度,即按照used_memory/minShare大小调度(核心思想是按照该调度算法决定调度顺序,但还需考虑一些边界情况);
DRF:借鉴了Mesos中的设计策略,按照主资源公平调度算法进行调度,具体已经在Apache Mesos调度器机制进行了介绍。
【总结】在MRv1和YARN中,尽管Fair Scheduler和Capacity Scheduler均是插拔式的,且实现原理基本一致,但由于YARN采用了事件驱动的编程模型,因此,它的资源调度器设计更加复杂,它要求用户不仅要了解基本的编程接口,还要理解ResourceManager与资源调度器之间基于事件的交互逻辑。
原创文章,转载请注明: 转载自董的博客
本文链接地址: http://dongxicheng.org/mapreduce-nextgen/hadoop-2-0-capacity-scheduler-fair-scheduler/