一.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任务究竟在哪台机器上执行