专业的编程技术博客社区

网站首页 > 博客文章 正文

大数据之-Hadoop3.x_Yarn_工作机制

baijin 2024-10-14 08:14:11 博客文章 13 ℃ 0 评论


?


首先我们的MapReduce程序要提交,整个时候,


比如我们提交了一个wc.jar,那么在这个程序的main方法中,有个


job.waitForCompletion() 这个方法,这个就等待执行完成对吧,然后在这个里面,就有个


yarnrunner对吧,如果是本地执行就是localrunner.


?


然后这个YarnRunner就会去给resourcemanager,去首先申请一个application,就是告诉resourcemanager,我要执行一个应用然后resourcemanager就返回给这个wc.jar中启动的这个


yarnrunner,就说,行你执行把,你先把资源提交到,这个路径,然后返回了一个hdfs的路径过来.


?


然后这个wc.jar和这个MapReduce程序就开始去,提交数据,那么提交什么数据呢?


可以看到有:


job.split job.xml wc.jar


这个job.split就包含了切片信息,数据分的快信息


然后job.xml就包含了,要求应用执行的时候就要按照这个job.xml的配置参数来执行


然后wc.jar就是必不可少的,就是执行这个jar包


?


1.然后当我们的这个wc.jar的这个yarnrunner,提交完运行所需要的资源以后,那么他就开始,去执行4,去申请要创建一个mrAppMaster,


用这个创建的applicationmaster来执行任务,这个申请发送到resourcemanager这里,然后


5.resourcemanager这个时候就会将发过来的请求封装成一个task一个任务,然后把这个任务放到fifo的调度队列中去,


要注意这个队列是个capacity容器,还要知道,这个时候,可能还有其他的mr程序来申请,所以,这个任务可能就会有很多


resourcemanager可能会生成很多的task对吧.


6.当resourcemanager的这个任务队列中,执行到这个任务的时候,那么就会有一个空闲的nodemanager,领取到这个任务


7.当nodemanager领取到这个任务以后,首先他会去创建一个mrappmaster,就是applicationmaster对吧,然后


8.这个applicationmaster会把资源,也就是之前yarnrunner,提交上来的,那些wc.jar job.xml job.split,把这些资源读取到自己本地,然后


他就再去给resourcemanager,去申请


9.去申请运行maptask的容器了,这个时候resourcemanager收到申请有,会再生成一个task,放到fifo的队列里面去


10.然后运行到这个任务的时候,就会有nodemanager,领取这个任务,去创建container容器,这个container包含了,cpu,内存,和wc.jar对吧


当然,这个容器不一定需要用多少个,需要根据,切片信息来生成,并且,这些容器也不一定会在同一个nodemanager上,有可能在


同一个nodemanager上,也有可能在不同的nodemanager上对吧.


?


11.接着等运行maptask的容器container都创建好了以后,然后applicationmaster,就开始去发送一个程序启动脚本,这个时候,


包含maptask的容器,就会,启动一个yarnchild,启动以后就开始处理数据,处理以后,就会把处理完的每个分区的数据都排序完了以后,然后放到一个文件中去,当然每个maptask都会产生一个文件.


12.然后applicationmaster再去给resourcemanager发个情况,去申请容器,来运行reducetask,resourcemanager收到请求以后,然后


会再去创建一个任务,然后把这个任务放到fifo队列中去,然后,等这个任务运行到了以后,就会有nodemanager去领取到这个任务,


然后创建container,去执行reducetask


13.reduce向map阶段写好的文件拉取数据,去处理处理的时候也是上面开启的container会启动yarnchild,去处理


处理以后那么这个过程就算是完了.


14.都执行完了以后这个时候applicationmaster,就会给resourcemanager发送一个请求,告诉resourcemanager说


执行完了,然后resourcemanager,就会再生成一个任务,去销毁,创建的用来执行上面的maptask,reducetask的


container,这样资源回收了以后,再去分配给其他的container执行.


这个就是整个yarn的工作流程.


?

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表