大数据—Hadoop(十五)_ Yarn_01、概念

1、Yarn基础架构

1.1 用途

  1. 管理资源
    相当于一个分布式操作系统
    MR相当于一个运用程序
  2. 分配资源
    负责任务在哪个平台上运行更合理

1.2 组件

在这里插入图片描述

  1. Resource Manager
    整个集群资源老大
    处理客户端请求
    监控 Node Manager 运行情况
    启动和监控 Application Master 运行情况
    资源分配和调度
  2. Node Manager
    单节点资源老大
    Resource Manager 发来的请求
    Application Master发来的命令
  3. Container
    容器
    相当于一台小电脑
    包含cpu、内存等资源
  4. Application Master
    单任务资源老大
    向Resource Manager申请资源
    监控maptask和reducetask任务的运行情况

2、Yarn的工作机制(面试题)

在这里插入图片描述

  1. 在客户端上运行jar包
/home/atguigu/wc.jar
  1. jar包的方法驱动类,最后一行是job.waitForCompletion(true);
main{
   boolean result = job.waitForCompletion(true);
}
  1. 如果使用yarn模式,则会创建yarn runner;如果使用本地模式,则会创建local runner
    yarn模式会提交三样东西
    配置:.xml、切片:.split、jar包:wc.jar

  2. yarn runner 会向 Resource Manager 申请运行 MR Application Master(单任务资源老大)

  3. Resource Manager 会将任务的请求生成一个Task,放入队列中

  4. 空闲的Node Manager会领取任务

  5. Node Manager会创建Container
    包含CPU、磁盘资源、网络IO

  6. 会下载之前Job提交的三样东西(配置.xml、切片.split、jar包wc.jar)

  7. NodeManager上的MR Application Master会根据切片信息,开启对应数量的MapTask(相当于是MR Application Master的子任务)

  8. 每个MapTask同样会放在Container中运行,每个Container同样包含CPU、磁盘资源、网络IO

  9. MR Application Master启动MapTask任务,开始跑MapTask

  10. MR Application Master申请运行ReduceTask,先申请容器,后开始跑ReduceTask

  11. MapTask、ReduceTask任务完成后,释放Container资源

3、作业提交全过程

HDFS

  1. 先有数据存储在集群上
  2. NameNode 记录数据的元信息
  3. Secondary NameNode 备份 NameNode ,恢复 NameNode 一部分工作
  4. DataNode 处理数据实实在在的存储

YARN

  1. 客户端向服务器提交任务后,Resource Manager 会找一个节点,开启 Container,把 Application Master 放在节点上
  2. Application Master 会根据任务需要向 Resource Manager 申请资源
  3. Resource Manager 确认节点是否有足够的资源,有的话,开启对应的资源

MapReduce

  1. 开始 Map Task、Reduce Task
  2. Reduce阶段,将 MapTask 后的结果汇总,写入HDFS

4、Yarn调度器和调度算法

4.1 调度器

概念
管理任务执行先后和资源分配

位置
位于Yarn的工作机制第五步
ResourceManager 会将任务的请求生成一个Task,放入任务队列中,由任务队列来管理多个客户端提交上来的任务

分类
1. 先进先出(FIFO)
2. 容量调度器 (Capacity Scheduler)
3. 公平调度器 (Fair Scheduler)

默认
Apache Hadoop3.1.3 默认的资源调度器是容量调度器 (Capacity Scheduler)
CDH 默认的资源调度器是公平调度器 (Fair Scheduler)

4.2 先进先出(FIFO)

在这里插入图片描述

  • 单队列,按照到达时间,先到的任务先处理
  • 无法支持多队列,所以生产环境不会使用

4.3 容量调度器 (Capacity Scheduler)

4.3.1 特点

在这里插入图片描述

  • 多队列
    - 每个队列可以配置一定的资源
    - 每个队列本质上都是 先进先出(FIFO)队列
    - 优先满足靠前的任务(如:单队列有10G,A任务2G,B任务8G,C任务2G,则会跑A和B任务,等资源释放后再跑C任务)

  • 容量保证
    - 每个队列都有自己最低资源和最高资源上限,当资源不足时,尽可能保证每个队列都能满足最低的资源需求(指所有队列都能把任务跑起来)

  • 灵活性
    - 本身队列资源有剩余,可以借给其他队列使用
    - 如果自身需要资源时,其他队列会把资源优先归还

  • 多租户
    - 为了防止某些用户独占队列中的资源,调度器会对每个用户提交的资源总量做限制
    - 即使同队列其他用户有空闲资源也不能使用
    - 防止某些用户跑了一个递归死循环

4.3.2 分配优先级算法

在这里插入图片描述

  • 队列资源分配
    • 优先选择资源占用率最低的队列分配
    • 例如同时开启队列A、队列B、队列C,优先执行任务A
  • 作业资源分配
    • 可以给作业设置优先级,如果没有优先级,按照时间先后顺序执行
  • 容器资源分配
    • 可以给容器设置优先级,如果没有优先级,按照本地性原则
      • 优先数据和任务在同一个节点
      • 其次数据和任务在同一个机架
      • 最后数据和任务在不同机架、节点
  • 核心调度策略
    • 优先执行资源占用率低的任务

4.4 公平调度器 (Fair Scheduler)

4.4.1 特点

Fair :当一个队列中有N个任务在跑时,每个任务都能获得1/N的资源

4.4.1.1 与容量调度器 (Capacity Scheduler)特点相同之处
  • 多队列
    - 每个队列可以配置一定的资源

  • 容量保证
    - 每个队列都有自己最低资源和最高资源上限,当资源不足时,尽可能保证每个队列都能满足最低的资源需求(指所有队列都能把任务跑起来)

  • 灵活性
    - 本身队列资源有剩余,可以借给其他队列使用
    - 如果自身需要资源时,其他队列会把资源优先归还

  • 多租户
    - 为了防止某些用户独占队列中的资源,调度器会对每个用户提交的资源总量做限制
    - 即使同队列其他用户有空闲资源也不能使用
    - 防止某些用户跑了一个递归死循环

4.4.1.2 与容量调度器 (Capacity Scheduler) 特点区别
  • 核心调度策略不同
    - 容量调度器:优先执行资源占用率低的任务
    - 公平调度器:优先执行资源缺额较大的任务
  • 资源分配方式不同
    - 容量调度器:FIFO、DRF(内存+CPU配比)
    - 公平调度器:FIFO、DRF(内存+CPU配比)、FAIR

4.4.2 分配优先级算法

在这里插入图片描述

  • 队列资源分配
    - 第一次算,先按照公平原则,给每个队列均分资源
    - 第二次算,将空闲资源拿出来,分给含有缺额的队列

  • 作业资源分配
    - 如果没有权重,先均分,再把差额再次均分
    - 如果设置了权重,一直按照权重进行分配
    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据之负

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值