Yarn调度器主要分三类:
FIFO、CapacityScheduler(容量调度器)和Fair Scheduler(公平调度器)。
Apache默认的资源调度器是容量调度器。
CDH默认是公平调度器。
区别:
FIFO调度器:不支持多队列、先进先出,生产环境不会用。
容量调度器:支持多队列,保证先进入的任务优先执行。
公平调度器:支持多队列,保证每个任务公平享有队列资源。资源不够时可以按照缺额分配。
特点:
FIFO调度器:简单易懂;不支持多队列;生产环境不会使用。
容量调度器:支持多队列;优先选择资源利用率低的队列;每个队列可以采用FIFO或者DRF调度策略;如果一个队列中的资源有剩余,可以暂时共享给那些需要资源的队列,而一旦该队列有新的应用程序提交,则其他借调的资源会归还给该队列。
公平调度器:支持多队列;优先选择对资源的缺额比例大的;每个队列可以采用FIFO、FAIR或者DRF策略;可以借调资源给需要的队列;
怎么选择:
大厂:如果对并发要求高,选择公平,要求服务器性能必须OK。
中小公司,集群服务器资源不太充裕,选择容量。
生产环境怎么创建队列
- 调度器默认一个default队列,不能满足需求。
- 按照框架:hive/spark/flink 每个框架的任务放入指定的队列(使用的不是特别多)。
- 按照业务模块:登录注册、购物车、下单、业务部门1、业务部门2
创建多队列的好处
- 不用担心员工不小心写递归死循环代码,将所以资源耗尽。
- 实现任务的降级使用,特殊时期保证重要的任务队列资源充足。
业务部门 1(重要)=》业务部门 2(比较重要)=》下单(一般)=》购物车(一般)=》 登录注册(次要)