yarn源码解析

目录

    • yarn流程
      • AM(appmaster)的工作机制
      • 调度器
        • 先进先出调度器(FIFO)
        • 容量调度器(Capacity Scheduler)
        • 公平调度器(Fair Scheduler)
    • mr on yarn

yarn流程

yarn源码解析_第1张图片

  1. Client向RM发出请求
  2. RM返回一个ApplicationID作为回应
  3. Client向RM回应Application Submission Context(ASC)。ASC包括ApplicationID、user、queue,以及其他一些启动AM相关的信息,除此之外,还有一个Container Launch Context(CLC),CLC包含了资源请求数(内存与CPU),job files,安全token,以及其他一些用以在一个node上启动AM的信息。任务一旦提交以后,client可以请求RM去杀死应用或查询应用的运行状态
  4. 当RM接受到ASC后,它会调度一个合适的container来启动AM,这个container经常被称作为container 0。AM需要请求其他的container来运行任务,如果没有合适的container,AM就不能启动。当有合适的container时,RM发请求到合适的NM上,来启动AM。这时候,AM的PRC与监控的URL就已经建立了。
  5. 当AM启动起来后,RM回应给AM集群的最小与最大资源等信息。这时AM必须决定如何使用那么当前可用的资源。YARN不像那些请求固定资源的scheduler,它能够根据集群的当前状态动态调整。
  6. AM根据从RM那里得知的可使用的资源,它会请求一些一定数目的container。
  7. RM将会根据调度策略,尽可能的满足AM申请的container

AM(appmaster)的工作机制

在一个job运行时,AM会向RM汇报心跳与进度信息,在这些心跳过程中,AM可能去申请或释放container。会当任务完成时,AM向RM发送一条任务结束信息然后退出。

调度器

先进先出调度器(FIFO)

先进先出,同一时间队列中只有一个任务在执行,生茶环境没人会用它
yarn源码解析_第2张图片

容量调度器(Capacity Scheduler)

多队列;每个队列内部先进先出,同一时间队列中只有一个任务在执行。队列的并行度为队列的个数
也是2.7默认的资源调度器
yarn源码解析_第3张图片

公平调度器(Fair Scheduler)

多队列;每个队列内部按照缺额大小分配资源启动任务,同一时间队列中有多个任务执行。队列的并行度大于等于队列的个数
yarn源码解析_第4张图片

mr on yarn

  1. Mr程序提交到客户端所在的节点
  2. Yarnrunner向Resourcemanager申请一个Application。
  3. rm将该应用程序的资源路径返回给yarnrunner
  4. 该程序将运行所需资源提交到HDFS上
  5. 程序资源提交完毕后,申请运行mrAppMaster
  6. RM将用户的请求初始化成一个task
  7. 将task任务分配给NodeManager
  8. 该NodeManager创建容器Container,并产生MRAppmaster
  9. Container从HDFS上拷贝资源到本地
  10. MRAppmaster向RM 申请运行maptask容器
  11. RM将运行maptask任务分配给另外两个NodeManager,另两个NodeManager分别来领取任务并创建容器。
  12. MR向两个接收到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动maptask,maptask对数据分区排序
  13. MRAppmaster向RM申请2个容器,运行reduce task。
  14. reducetask向maptask获取相应分区的数据。
  15. 程序运行完毕后,MR会向RM注销自己。

我们的资源是在hdfs上的yarn源码解析_第5张图片

你可能感兴趣的:(#,hadoop,hadoop)