MapReduce的工作机制

Posted lxjshuju

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MapReduce的工作机制相关的知识,希望对你有一定的参考价值。

       MapReduce的运行流程简单概括例如以下:用户作业运行JobClient.runJob(conf)代码会在Hadoop集群上将其启动。启动之后JobClient实例会向JobTracker获取JobId。并且client会将作业运行须要的作业资源拷贝到HDFS上,然后将作业提交给JobTracker。JobTracker在本地初始化作业,再从HDFS作业资源中获取作业输入的切割信息。依据这些信息JobTracker将作业切割成多个任务,然后分配给在与JobTracker心跳通信中请求任务的TaskTracker。

TaskTracker接收到新的任务之后会先从HDFS上获取作业资源,包含作业配置信息和本作业分片的输入,然后在本地启动一个JVM并运行任务。任务结束之后将结果写回HDFS。


       MapReduce中採用的两种机制。各自是错误处理机制和作业调度机制。在错误处理机制中,假设遇到硬件故障,MapReduce会将故障节点上的任务分配给其它节点处理。

假设遇到任务失败,则会又一次运行。在作业调度机制中,主要是公平调度器。这样的调度策略可以依照提交作业的用户数目将资源公平的分到用户的作业池中。以达到公平共享整个集群的目的。


       最后介绍一下MapReduce中两个流程的细节,各自是shuffle和任务运行。shuffle的过程能够概括为:在map端。当缓冲区内容达到阈值时Map写出内容。写出时依照key值对数据排序。再依照划分将数据写入文件,然后进行merge并将结果交给Reduce。在Reduce端,TaskTracker先从运行Map的TaskTracker节点上复制Map输出,然后对排序合并,最后进行Reduce处理。

       关于任务运行则主要介绍三个任务运行的细节,各自是猜測式运行、JVM重用和运行环境。猜測式运行是指JobTracker在作业运行过程中。发现某个作业运行速度过慢。为了不影响整个作业的完毕进度,会启动和这个作业全然同样的备份作业让TaskTracker运行,最后保留而这样的较快完毕的结果。JVM重用主要是针对照较零碎的任务。对于新任务不是启动新的JVM,而是在先前任务运行完毕的JVM上直接运行。这样节省了JVM启动的时间。

以上是关于MapReduce的工作机制的主要内容,如果未能解决你的问题,请参考以下文章

MapReduce 框架原理MapReduce 工作流程 & Shuffle 机制

MapReduce工作机制

Hadoop Mapreduce 工作机制

MapReduce的工作机制

大数据之Hadoop(MapReduce):shuffle之ReduceTask工作机制

Hadoop--09---MapReduce_04----MapReduce工作流程Shuffle 机制Partition 分区