全分布式架构将分化得更彻底,调度器之间没有协调,使用许多独立的调度器来处理传入的负载,如图1d所示。每个调度程序只处理它们的本地数据,通常是集群的陈旧数据。任务可以提交给任何调度器,每个调度器都会将任务放置在集群中的任意位置。与两层调度器不同,调度器不负责隔离。相比之下,全局调度器和资源分区根据不同和随机工作负载的统计效果做出决策——类似于共享状态调度器,但没有中央控制。最近的分布式调度器运动应该是从Sparrow(http://dl.acm.org/citation.cf...我们在集群中运行的任务会更短,基于一个论点(http://dl.acm.org/citation.cf...thatfiner-grainedtaskshavemorebenefits作者假设任务会变得越来越多,这意味着调度器应该支持更高级别的吞吐量。由于单个调度器可能无法维持这样的吞吐量(假设每秒100W个任务!),Sparrow将负载卸载到许多调度器。这是有道理的:缺乏中央控制可以变成一个很好的特性,可以很好地适应一些工作负载——未来更多。由于分布式调度器不需要相互协调,它们可以比高级单片、2层的逻辑更简单,或共享状态调度器。例如:分布式调度器可以根据“槽”的简单概念将每台机器划分为n个标准,槽对应n个并行任务。这简化了任务所需的资源,并且不统一。队列也被用在worker端作为简单的服务逻辑(比如Sparrow的FIFO)来保证灵活的调度。调度程序只能选择在哪台机器上排队任务。分布式调度器很难执行全局调度(例如:公平策略或严格的优先级控制),因为没有中央控制。因为它们都是为了在知之甚少的情况下快速做出决策而设计的。分布式调度器无法支持复杂或自定义的应用程序策略。避免干扰任务,例如使用一些后门方法。扫一扫关注公众号。交流邮箱:zhukunrong@yeah.net
