背景
我觉得资源管理器所要处理的问题无外乎几块:资源分配的策略,资源分配的粒度,资源分配的方式,不同类型任务的调度等。看了Google新一代资源管理器Omega的论文之后,对比Mesos和YARN总结了下面一些内容。
问题分类
任何资源调度系统都将面临下面几个问题。
该怎么分离不同的调度工作?
第一,可以无视任务类型,进行均衡负载地分配。第二,专门分离一些适合不同调度工作的调度器去负责各种调度反正。第三,上两种的结合。有的系统使用多个优先级不同的任务队列来处理任务请求(YARN就是这么做的),看上去是分离了不同的调度工作,不过本质上不影响调度并行性,比如有多少调度器是可以同时去处理这些队列呢?
如何选择资源?
资源可以全局地来自于整个集群的空闲资源,也可以限制到某个子集群。前者无疑可以达到更好的控制和优化效果,并且有些挑剔的任务可以尝试去抢占其他任务的空闲资源。不过抢占这种方式带来的开销是原任务在需要这些资源的时候需要等待抢占任务对资源的释放(YARN就是支持抢占模式的)。
如何处理资源争抢(干扰)?
如果各个调度器可以自由地尝试获取需要的资源,那么