博学谷提供支持
Capacity Scheduler是由Yahoo贡献的,是Hadoop上一个可插拔式的调度器,它允许多用户安全地共享一个大型的集群,能够在分配的容量限制下,及时地为用户的应用程序分配资源。
Capacity Scheduler用来设计运行Hadoop应用程序,使之成为一个共享的、操作友好的、多用户的集群。同时,最大化集群的吞吐率和利用率。
传统上,每个组织都有它们自己私有的一组机器资源,有充足的能力来满足在峰值或接近峰值时的资源需求。这通常导致较差的资源利用率和多个独立集群(每个组织一个)的管理开销。
各个组织之间共享集群是非常有效益的一种运行Hadoop的方式,因为这让他们不用创建私有集群便可享受有规模的服务。
但各个组织比较关心共享集群的方式,因为他们担心别人占用关乎自己SLA(服务级别协议)的资源。
因此Capacity Scheduler设计成给每个组织容量保证的同时共享一个大的集群。它的核心思想是:多个组织根据他们的计算需求大小,共同投资建设集群,然后根据投资的多少共享Hadoop集群中的可用资源。
还有一个额外的好处,一个组织可以访问别人没有使用的额外的容量,从而提供一个符合成本效益的弹性组织方式。
跨组织共享集群,需要多个组织的用户的大力支持,因为每一个组织必须保证容量和安全防范,以确保共享的集群不受单个应用程序或用户的影响。
Capacity Scheduler提供了一套严格的限制以确保单个应用程序、用户或队列不会消耗不合比例的集群资源。
此外,Capacity Scheduler提供了初始化/挂起一个用户或者队列的应用程序的限制,以确保集群的公平与稳定。
Capacity Scheduler最重要的一个抽象概念是队列,队列一般是由管理员建立来反应集群的分配的。
为了提供对共享资源的进一步的控制和预测,Capacity Scheduler支持层级队列,可以保证资源在一个队列的子队列中优先于其他队列来获取到空闲的资源,从而提供了在一个组织内部各应用程序间共享资源的密切关系。