文章目录
资源调度永远是一个对立统一的问题,在一个限定的资源范围里,我们总是希望资源可以这样有效地分配:
- 宏观上,整体的资源应该尽可能地被共享,这样才能提升资源利用率,节约成本
- 局部上,每一个请求资源的主体有权对一定的资源拥有优先或独占的权利,以确保其作业可以按时完成,这在宏观上是要求对资源进行隔离
简单总结就是:宏观上要求共享,提升整体的资源利用率,局部上需要独占,确保作业及时可控地完成,这是一组相互冲突和矛盾的需求,只有调度策略具备一定的弹性,才能在这种相互冲突的体系获得一种均衡和利益最大化。
回到Yarn的资源调度上,Yarn提供了三种资源分配策略,分别是:Fifo Scheduler,Fair Scheduler和Capacity Scheduler,今天我们单独讨论一下Capacity Scheduler。
首先,我们要时刻记住:一个作业可以获得多少资源是受两个“因子”同时制约的:队列(Queue)和用户(User),一个作业一定是以某个用户的身份提交给某一个队列的,但是多个队列和多个用户下,资源的分配策略将决定这个作业最终可以获得多少资源。通常大家关注队列的状况多一些