YARN调度组件
YARN有一个可拔插的调度器组件,根据不同的使用场景和用户需求,管理员可以选择简单的FIFO(先入先出),Capacity或者Fair Share Scheduler。Scheduler类在yarn-dafault.xml中设置关于当前正在运行的调度信息,可以通过打开的ResourceManager网站界面,在左侧的集群菜单中的调度选项找到。
1.FIFO调度器
FIFO调度基本上是一个简单的“先来先服务”的调度,其中JobTracker从一个工作队列首先拉取最早的作业。FIFO调度不考虑作业的优先级和范围。FIFO调度适合低负载集群,但是当使用大型共享集群时,它的功能不佳并且可能会导致一些问题。
2.Capacity调度器
Capacity调度器是YARN中的另一个可拔插的调度器,允许多个组件安全的共享一个大规模Hadoop集群。容量调度器在很多大规模Hadoop集群上成功运行。
为了使用Capacity调度器,管理员使用总槽位(或处理器)容量的预定值配置一个或多个队列。这种分配保证了每个队列的最小资源使用量。管理员为每个队列的可用资源容量配置了软限制和可选的硬限制。每个队列有严格的ACL(访问控制列表),用以控制哪些用户可以向每个队列提交作业。另外也有措施来保证用户无法查看或修改其他用户的应用程序。
容量调度器允许共享集群,同时给每个用户或租一定的最小容量保证。这些最小值在不需要时可以放弃,超过的容量将会给与那些最饥饿的队列,其中饥饿成都用运行中或以用的队列容量来衡量。因此,由初始的最小容量保证所定义的最满队列将获得最需要的资源。空闲容量可以被分配,并且以最具成本效益的弹性方式提供给用户。
队列的定义和属性(如容量和ACL)可以由管理员以安全的方式,在运行时更改,以尽量减少对用户的干扰。管理员可以在运行时添加额外的队列,但队列不能在运行时被删除。此外,管理员可以在运行时停止队列,以确保在现有的应用程序运行完毕后,没有新的应用程序被提交。