【HADOOP】浅谈Yarn的工作机制

【HADOOP】浅谈Yarn的工作机制,第1张

【HADOOP】浅谈Yarn的工作机制

Yarn 的基本思想是将JobTracker的两个主要功能(资源管理和作业调度/监控)分离,主要方法是创建一个全局的ResourceManager(RM)和若干个针对应用程序的ApplicationMaster(AM)。这里的应用程序是指传统的MapReduce作业或作业的DAG(有向无环图)。

  1. 首先Client(客户端)调用job.waitForCompletion 方法,向整个集群提交MapReduce作业;
  2. 这个时候YarnRunner 会向ResourceManager(RM) 申请一个Application(作业);
  3. 这时RM 会给Client 返回当前Job 资源的提交路径和 一个Application_id(作业ID);
  4. 收到申请到的作业ID后,Client提交jar 包、切片信息(.splits)和配置文件(.xml)到指定的资源提交路径;
  5. 程序资源提交完毕后,Client 接着向RM 请求运行MrAppMaster;
  6. RM 收到请求,将请求初始化成一个Task,并添加到 Capacity Scheduler(默认容量调度器);
  7. 待当某一个空闲的NodeManager(NM) 领取到该Task 任务;
  8. 该NM会创建一个Container(动态资源分配单位,它将内存、CPU、磁盘、网络等资源封装在一起,从而限定每个任务使用的资源量。),并产生MRAppmaster;
  9. 然后该NM会从HDFS上拷贝该Job所提交的资源到本地;
  10. 根据Job提交信息,MRAppmaster 会向RM 申请运行多个MapTask任务资源;
  11. RM 根据 MRAppmaster 的申请添加到 Capacity Scheduler。
  12. 待 有空闲的NodeManager 领取到该任务,会在本地也创建Container;
  13. 然后RM 会将领取到任务的NM 发送程序启动脚本;
  14. 脚本启动后,NM 会启动 MapTask 对数据进行处理;
  15. MrAppMaster 等待所有的MapTask运行完毕之后,又会向RM申请容器运行ReduceTask;
  16. ReduceTask向MapTask获取相应分区的的数据,进行运行;
  17. 当程序运行完毕,MrAppMaster会向RM注销自己。


目前,Hadoop作业调度器主要有三种:FIFO(先进先出)、Capacity Scheduler(容量 )和Fair Scheduler(公平)。Hadoop2.7.2默认的资源调度器是Capacity Scheduler。


    The class to use as the resource scheduler.
    yarn.resourcemanager.scheduler.class
org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5679466.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存