【博学谷学习记录】超强总结,用心分享 | yarn的执行流程

发布时间 2023-06-01 10:05:47作者: 牛牛牛牛牛牛牛牛

【博学谷IT技术支持】

yarn的组成部分

hadoop是由Common、HDFS、YARN、MapReduce等核心模块组成,yarn负责解决资源调度问题,这里介绍下yarn的业务执行流程。

  • yarn是Master/Slave结构,主要包含ResourceManage、NodeManager、ApplicationMaster和Conainer等组件。

  • ResourceManager为主节点,负责整个集群资源的管理和分配,由Scheduler(调度器)和ApplicationManager(应用程序管理器)组成。

    • Scheduler根据容量和队列等限制条件,为每个运行的程序分配资源
    • ApplicationManager 负责管理管理所有的应用程序,包括应用程序提交、与调度器协调资源启动ApplicationMaster、监控ApplicationMaster运行状态,并在失败时重新启动它。
  • NodeManager是从节点,定时想ResourceManager汇报资源使用情况,保持心跳,接受来自ApplicationMasterde 的Container启动/停止等各种请求。

yarn的执行流程

请添加图片描述

  1. 客户端向RM提交任务请求
  2. RM会在NM分配一个Container,启动AppMaster,让它管理整个任务的执行。
  3. AppMaster向任务调度器进行注册
  4. AppMaster向应用程序管理器申请资源,RM以Container列表的形式返回资源列表。
  5. AppMaster根据资源列表分别向对应的主机申请资源
  6. 各个NM根据Container分别开辟对应的资源,并且AppMaster会将MR任务各个MapTask和ReduceTask放在这些资源中运行
  7. 各个MapTask和Reduce在运行过程中,有任何的状态都需要向AppMaster汇报。
  8. AppMaster会将任务执行的最终状态汇报给RM

简述

客户端向ResourceManager提交任务请求,RM分配资源

Scheduler调度器

  • FIFO(队列调度器): 将job放入队列中,先入的job会优先得到资源,会因为一个job过大占用多数资源,影响后边job执行
  • Capacity Scheduler(容量调度器):将资源化成多个队列,提交任务如果没有指定队列会默认队列,可以给每个队列设置资源占用比例。
  • Fair Scheduler(公平调度器):根据job对总资源进行平均分配。

ApplicationMaster

每个应用程序都包含一个ApplicationMaster,主要的作用是

  • 与ResourceManager协调获取资源
  • 将任务进一步分配给内部任务
  • 与NodeManager通信启动或停止任务
  • 监控所欲任务运行状态,并在失败时为任务重新申请资源启动任务

Container

container是yarn中抽象的资源,它封装了某个接地那上的多维度资源,如内存,cpu,磁盘,网络等。

  • 运行在ApplicationMaster的Container
  • 运行在各类任务的Container