Hadoop中yarn的概念和Yarn框架的大体工作流程

一.Yarn的组成

Resource manager(RM),node manager(NM)。

二.Yarn的目的

Yarn是负责集群的资源调度。

 

三.我们提交jar包的时候应用的命令是:hadoop jar jar包 主类地址。然后我们的配置job运行时的一些参数的时候,有这么一句代码:job.waitforcompletion(),它在运行的时候会启动一个runjar的进程。以下是它的一些工作步骤:

①   .它会向RM去申请执行一个job。

②   .RM会返回job相关资源提交路径(staging dir)和本次job的jobid。

③   .将资源提交到hdfs上的/tmp/…/…/yarn-stagin/自己的jobid/下面。

④   .汇报提交结果。

⑤   .RM会将本次任务加入任务队列,会提前规定好某些job分配到哪些NM上。

⑥   .NM会通过心跳机制和RM通信,会检查RM上的任务队列,然后如果发现自己有新的任务了,就会把任务领取。

⑦   .分配运行资源容器。NM上面会初始化任务的运行环境,cpu资源,内存资源,io资源等。一个NM上可能有多个job在运行,每一个job都有自己的运行环境,它们各自的运行环境我们称之为container。

在这个步骤中,它不仅仅是分配一些cpu资源,内存资源,它也会把hdfs上的/tmp/…/…/yarn-stagin/自己的jobid/下面的资源也拉到对应的nm上。至此,container中代码有了,jar包也有了,运行时所需要的资源也有了。

 

剩下的工作就是启动map任务和reduce任务。但是map任务和reduce任务究竟在哪台机器上执行,每台机器上究竟执行多少个map任务,多少个reduce任务,这些东西Yarn框架不做管理。

这些是MR框架中MRAppMaster来管理的,这个是Yarn框架帮助启动的。

⑧   .RM启动MRAppMaster。

⑨  .MRAppMaster启动之后,首先会向RM进行注册。获得哪些NM上面有资源能给我进行任务进行的一些信息,然后AppMaster会在对应的NM上启动map任务或者reduce任务,对应的进程名叫Yarnchild。每执行完一个任务,AppMaster都会知道,然后当Job完成后,RM会回收资源。

以上过程中,RM和NM是在集群启动的时候就已经存在的了,而MR框架中的MRAppMaster和Yarnchild是任务执行过程中动态产生的。


以上有不正确的地方,烦请指正,希望能给您们带来帮助。


你可能感兴趣的:(hadoop)