Mapreduce1 、Mapreduce2、Yarn 作业运行流程
2021-01-29 18:54:21 0 举报
Yarn 与MapReduce作业流程
作者其他创作
大纲/内容
MRAppMaster
ResourceManger
node manager node
MapReduceProgram
NodeManger
resource manager node
Child
MapReduce1作业运行流程
10.run
JobClient
clientJVM
1. MapReduce Program 调用runJob()创建JobClient并告知其提交作业。在提交作业后runJob()会每秒轮询作业进度,如果发生改变就把进度输出控制台。作业成后输出作业计数器,如果失败,则输出失败信息。 2. JobClient通过调用JobTracker.getNewJobId()请求一个新的JoobId。3. 将运行作业需要的资源(作业Jar文件,配置文件,计算所得的输入分片)复制到以JobId命名的目录下jobtracker的HDFS中。作业Jar的会有多个副本(mapred.submit.replication默认10),在运行作业的时候,tasktracker可以访问多个副本。4. 调用JobTracker.submitJob()方法告知jobtracker作业准备执行。5。 JobTracker接收到对submitJob()的调用后,会把改调用放入一个内部队列,交由作业调度起(job scheduler)进行调度。同时会对Job初始化,包括创建一个表示Job正在运行的对象,用来封装任务和记录的信息,用于追踪任务的状态和进程。6. 为了创建人物运行列表,作业调度起会从共享文件系统中获取JobCient已经计算好的输入分片信息。然后为每一个分片创建一个map任务。至于reduce任务则由JonConf的mapred.reduce.task决定,通过setNumReduceTask()设置,然后调度器创建相应数量的reduce任务。此时会被指定任务ID7. tasktracker与jobtracker之间维持一个心跳,作为消息通道,tasktracker或告知自身存活情况与是否可以运行新的任务。根据信息,jobtracker会决定是否为tasktracker分配任务(通过调度算法)。这个过程中,对于map任务会考虑数据本地性,对于reduce则不需要。8. 一旦tasktracker被分配了任务,接下里就是执行,首先通过Hdfs把作业的Jar文件复制到tasktracker所在的文件系统。实现作业Jar本地化。同时,tasktracker把需要的文件从Hdfs复制到本地磁盘。然后为任务建立一个本地工作目录,并将Jar中的呢容解压到这里。最后创建一个TaskRunner实例运行该任务。9. TaskerRunner启动一个新的JVM用来运行每一个任务。10. 分别执行MapTask或者ReduceTask,结束后告知TaskTracker结束信息,同时TaskTracker将该信息告知JobTracker
JobTracker
jobtrackerNode
5.start container
MapReduce 2 t提交流程
1.runjob
3. copy job resources
Applicationprocess
10.start container
tasktracker Node
3.launch
Child JVm
client node
MapTaskorReduceTask
2.satrt container
Job
Container
TaskTracker
Yarn 任务提交流程
6.launch
6.retrieve input splits
4.sunmit application
11.launch
3. copy job resource
8.retrieve job resources
Applicationmasterprocess
Hdfs
5. initialize job
YarnChild
4.submit job
2. get new jobID
2.get new appication
ApplcationClient
task JVM
12.retrieve job resource
ClientNode
HDFS
7.initialze job
4.allocate resource(heartbeat)
9.allocate resources
1.submit Yarn aoolication
8.rerieve input splits
9.launch
7.heartbeat(return task)
1.run job
13.run
主要实体:Client:负责提交 MapReduce 作业jobtracker:协调作业运行,是一个Jave程序,主类为JobTrackertasktracker:运行作业划分后的任务,是一个Jave程序,主类为TaskTrackerHdfs:分布式文件系统,用于在其他实体之间共享作业文件
client JVM
0 条评论
下一页