YARN

MapReduce(Hadoop 1.x)的设计缺陷

身兼两职:计算框架+资源管理框架  JobTracker+TaskTracker(1:N)

  • JobTracker

- 既做资源管理,又做任务调度

- 任务太重,开销过大

- 存在单点故障

  • 资源描述模型过于简单,资源利用率较低

- 仅把Task数量看作资源,没有考虑CPU和内存

- 强制把资源分为Map Task Slot和Reduce Task Slot,无法兼容其他的框架,通用性差

  • 扩展性较差,集群规模上限4K

YARN所处的位置

 架构

 工作机制

 资源调度策略

- FIFO调度器

--- 调度策略:

     单队列,将所有任务放入一个队列,先进队列的先获得资源,排在后面的任务只有等待

--- 缺陷:

    资源利用率低,无法交叉运行任务

    灵活性差,比如紧急任务无法插队,耗时长的任务拖慢耗时短的任务

- 容量调度器

--- 核心思想:提前做预算,在预算指导下分享集群资源

--- 调度策略

     集群资源由多个队列分享

     每个队列都要预设资源分配的比例(预算)

     空闲资源优先分配给“实际资源/预算资源”比例最低的队列

     队列内部采用FIFO调度策略

--- 特点

     层次化的队列设计:子队列可使用父队列资源

     容量保证:每个队列都要预设资源占比,防止资源独占

     弹性分配:空闲资源可以分配给任何队列,当多个队列争用时,会按比例进行平衡

     支持动态管理:可以调整队列的容量,权限等参数,也可动态增加,暂停队列

     访问控制:用户只能向自己的队列中提交任务,不能访问其他的队列

     多租户:多用户共享集群资源

--- 配置:

    全局配置:在yarn-site.xml中配置

    yarn.resourcemanager.scheduler.class------org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler

    自定义配置:在capacity-scheduler.xml中配置

- 公平调度器

--- 调度策略

   多队列公平共享集群资源

   通过平分的方式,动态分配资源,无需预先设定资源分配比例

   队列内部可配置调度策略:FIFO,Fair(默认)

--- 资源抢占

   终止其他队列的任务,使其让出所占的资源,然后将资源分配给占用资源量少于最小资源量限制的队列

--- 队列权重

   当队列中有任务等待,并且集群中有空闲资源时,每个队列可以根据权重获得不同比列的空闲资源

--- 配置:yarn-size.xml和fair-scheduler.xml

posted @ 2024-07-21 15:40  鼠标的博客  阅读(41)  评论(0编辑  收藏  举报