MapReduce中的作业调度

       MapReduce是hadoop提供一个可进行分布式计算的框架或者平台,显然这个平台是多用户的,每个合法的用户可以向这个平台提交作业,那么这就带来一个问题,就是作业调度。

      任何调度策略都考虑自己平台调度需要权衡的几个维度,例如操作系统中的进程调度,他需要考虑的维度就是资源(CPU)的最大利用率(吞吐)和实时性,操作系统对实时性的要求很高,所以操作系统往往采用基于优先级的、可抢占式的调度策略,并且赋予IO密集型(相对于计算密集型)的进程较高的优先级,扯的有点远。

      回到hadoop平台,其实MapReduce的作业调度并没有很高的实时性的要求,本着最大吞吐的原则去设计的,所以MapReduce默认采用的调度策略是FIFO(基于优先级队列实现的FIFO,不是纯粹的FIFO,这样每次h),这种策略显然不是可抢占式的调度,所以带来的问题就是高优先级的任务会被先前已经在运行并且还要运行很久的低优先级的作业给堵塞住。

      别的选择:Fair Scheduler 和 Capacity Scheduler

      未完待续~

原文地址:https://www.cnblogs.com/cherri/p/3308507.html