大数据学习记录(day6)-图说Mapreduce工作机制

原创 2017年06月05日 08:32:22

学习来源:http://www.aboutyun.com/thread-5641-1-1.html
http://www.aboutyun.com/thread-5595-1-1.html


一、Mapreduce 整个工作机制图。

图中1:表示待处理数据,比如日志,比如单词计数
图中2:表示map阶段,对他们split,然后送到不同分区
图中3:表示reduce阶段,对这些数据整合处理。
图中4:表示二次mapreduce,这个是mapreduce的链式
二、MapReduce Shuffle和排序
Mapreduce为了确保每个reducer的输入都按键排序。系统执行排序的过程-----将map的输出作为输入传给reducer称为shuffle。学习shuffle是如何工作的有助于我们理解mapreduce工作机制。
shuffle属于hadoop不断被优化和改进的代码库的一部分。从许多方面看,shuffle是mapreduce的“心脏”,是奇迹出现的地方。
下面这张图介绍了mapreduce里shuffle的工作原理:

从图可以看出shuffle发生在map端和reduce端之间,将map端的输出与reduce端的输入对应。
1、map 端
map函数开始产生输出时,并不是简单地将它输出到磁盘。这个过程更复杂,利用缓冲的方式写到内存,并出于效率的考虑进行预排序。shuffle原理图就看出来。
每个map任务都有一个环形内存缓冲区,用于存储任务的输出。默认情况是100MB,可以通过io.sort.mb属性调整。一旦缓冲内容达到阀值(io.sort.spill.percent,默认0.80,或者80%),一个后台线程开始把内容写到磁盘中。在写磁盘过程中,map输出继续被写到缓冲区,但如果在此期间缓冲区被填满,map会阻塞直到写磁盘过程完成。在写磁盘之前,线程首先根据数据最终要传送到reducer把数据划分成相应的分区,在每个分区中,后台线程按键进行内排序,如果有一个combiner,它会在排序后的输出上运行。
reducer通过HTTP方式得到输出文件的分区。用于文件分区的工作线程的数量由任务的tracker.http.threads属性控制,此设置针对每个tasktracker,而不是针对每个map任务槽。默认值是40,在运行大型作业的大型集群上,此值可以根据需要调整。
2、reducer端
map端输出文件位于运行map任务的tasktracker的本地磁盘,现在,tasktracker需要为分区文件运行reduce任务。更进一步,reduce任务需要集群上若干个map任务完成,reduce任务就开始复制其输出。这就是reduce任务的复制阶段。reduce任务有少量复制线程,所以能并行取得map输出。默认值是5个线程,可以通过设置mapred.reduce.parallel.copies属性改变。
在这个过程中我们由于要提到一个问题,reducer如何知道要从那个tasktracker取得map输出呢?
map任务成功完成之后,它们通知其父tasktracker状态已更新,然后tasktracker通知jobtracker。这些通知都是通过心跳机制传输的。因此,对于指定作业,jobtracker知道map输出和tasktracker之间的映射关系。reduce中的一个线程定期询问jobtracker以便获得map输出的位置,直到它获得所有输出位置。
由于reducer可能失败,因此tasktracker并没有在第一个reducer检索到map输出时就立即从磁盘上删除它们。相反,tasktracker会等待,直到jobtracker告知它可以删除map输出,这是作业完成后执行的。
如果map输出相当小,则会被复制到reduce tasktracker的内存(缓冲区大小由mapred.job.shuffle.input.buffer.percent属性控制),否则,map输出被复制到磁盘。一旦内存缓冲区达到阀值大小(由mapred.job.shuffle.merge.percent决定)或达到map输出阀值(mapred.inmem.merge.threshold控制),则合并后溢出写到磁盘中。
随着磁盘上副本的增多,后台线程会将它们合并为更大的、排好序的文件。这会为后面的合并节省一些时间。注意,为了合并,压缩的map输出都必须在内存中被解压缩。
复制完所有map输出被复制期间,reduce任务进入排序阶段(sort phase 更恰当的说法是合并阶段,因为排序是在map端进行的),这个阶段将合并map输出,维持其顺序排序。这是循环进行的。比如,如果有50个map输出,而合并因子是10 (10默认值设置,由io.sort.factor属性设置,与map的合并类似),合并将进行5趟。每趟将10个文件合并成一个文件,因此最后有5个中间文件。
在最后阶段,即reduce阶段,直接把数据输入reduce函数,从而省略了一次磁盘往返行程,并没有将5个文件合并成一个已排序的文件作为最后一趟。最后的合并既可来自内存和磁盘片段。
在reduce阶段,对已排序输出中的每个键都要调用reduce函数。此阶段的输出直接写到输出文件系统中。
小结:
今天通过一张图进一步了解了MapReduce的工作机制,同时学习了将map的输出作为输入传给reducer的Shuffle执行过程。

MapReduce工作机制

运行流程当你在MapReduce程序中调用了Job实例的Submit()或者waitForCompletion()方法,该程序将会被提交到Yarn中运行 其中的过程大部分被Hadoop隐藏起来了,对...
  • qq1010885678
  • qq1010885678
  • 2016年05月07日 12:54
  • 3905

大数据开发之走进MapReduce

摘要:本文节选于清华大学出版社推出的《Hadoop权威指南》一书,作者为Tom White。Tom自从2007年2月起,就一直是Apache Hadoop的提交者(committer)之一,本文包含了...
  • u010796790
  • u010796790
  • 2016年05月06日 17:44
  • 777

Hadoop学习笔记(7)-简述MapReduce计算框架原理

1. MapReduce基本编程模型和框架1.1 MapReduce抽象模型大数据计算的核心思想是:分而治之。如下图1所示。把大量的数据划分开来,分配给各个子任务来完成。再将结果合并到一起输出。 注...
  • xummgg
  • xummgg
  • 2016年05月30日 21:08
  • 2231

MapReduce的工作机制

我要这天,再遮不住我眼, 要这地,再埋不了我心, 要这众生,都明白我意, 要那诸佛,都烟消云散! ——《悟空传》 1、概述1.1 定义Mapre...
  • zhoutaochun
  • zhoutaochun
  • 2017年12月21日 21:36
  • 63

大数据相关说明图

图一:Hadoop2.4.1 HA模式集群搭建总结:图二:Hadoop1.0版本MapReduce运行原理:图三:基于Yarn平台的MapReduce运行机制:图四:应用程序(以MR程序为例)在Yar...
  • a2011480169
  • a2011480169
  • 2016年10月30日 16:36
  • 966

mapreduce 的工作机制

本节将会从作业的角度来解释一个作业是如何在Hadoop的MapReduce计算框架下提交、运行等。 一个MapReduce作业运行过程如图 作业提交 用户的MapRedu...
  • u010801439
  • u010801439
  • 2017年05月09日 10:43
  • 240

【机器学习实战-python3】大数据与MapReduce

本篇的数据和代码参见:https://github.com/stonycat/ML-in-Action 一、MapReduce:分布式计算的框架 MapReduce 优点:可在短时间内完成大量工...
  • sinat_17196995
  • sinat_17196995
  • 2017年05月15日 17:39
  • 773

Hadoop2.6(新版本)----MapReduce工作原理

最近在研究Hadoop,发现网上的一些关于Hadoop的资料都是以前的1.X版本的,包括MapReduce的工作原理,都是以前的一些过时了的东西,所以自己重新整理了一些新2.X版本的MapReduce...
  • tanggao1314
  • tanggao1314
  • 2016年04月28日 17:01
  • 19733

MapReduce的工作机制

MapReduce作业的运行过程如图6-1所示。包含4个独立的实体:(1)Client:提交MapReduce作业,(2)JobTracker:协调作业的运行。(3)TaskTracker:运行作业划...
  • wisgood
  • wisgood
  • 2013年11月23日 09:36
  • 823

大数据干货系列(一)--MapReduce总结

MapReduce总结   一、本质 MapReduce是一个基于分治思想,用于处理海量数据的分布式计算框架。   二、mapreduce解决了什么问题 1.数据分...
  • weixin_39793644
  • weixin_39793644
  • 2017年12月28日 09:20
  • 58
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:大数据学习记录(day6)-图说Mapreduce工作机制
举报原因:
原因补充:

(最多只允许输入30个字)