Yarn有FIFO Capacity FairS三种调度器 Capacity是Yarn的默认调度器
Capacity Scheduler的结构
Capacity Scheduler把hadoop集群的资源以队列的形式划分
存在一个根队列root 所有的自定义队列必须继承自root
默认的defalut队列也继承root
队列可以拥有子队列
队列的资源划分
队列的主要目的是划分不同类型任务的资源分配
例如存在两个队列:offline、realtime分别用于离线和实时任务
可以分别配置两个队列的资源限制、最大资源限制等 在yarn-site.xml
中配置
几个重要的配置:
-
yarn.scheduler.capacity.<queue-path>.queues
限制队列的资源占比 -
yarn.scheduler.capacity.<queue-path>.maximum-capacity
限制队列的最大资源占比 在其他队列空闲时可以利用空闲的资源的最大上限 -1为禁用 -
yarn.scheduler.capacity.state
队列的状态 RUNNING(活动的 可以提交任务)/STOPPED(不可提交任务)
简单的应用
项目中主要分两个队列分别用于实时和离线任务
离线任务通常在某个特定时间执行 可以慢但需要在一定时间内完成
实时任务几乎在24小时不间断执行
资源分配原则:
- 将实时队列的
maximum-capacity
提高 保证在一天中绝大多数时候实时任务快速完成避免堆积 - 将实时队列的
capacity
降低 避免离线任务启动时 资源被实时任务占用过多导致等待过久 - 实时离线任务同时执行时 可能出现资源不足的情况 导致实时任务被堆积进而导致所有的实时任务延迟 如果业务在资源紧张的情况下允许牺牲实时任务的频率 可以将实时队列的
maximum-applications
降低 能够减少同时存在的实时任务的数量
网友评论