5分钟掌握大数据:MapReduce

在使用java编写MaReduce程序之前,先让我们解决一个基本问题——MapReduce是什么?它的运行机制是怎么样的?

能够打开这篇文章的读者,应该或多或少都有一些技术基础。但是为了使得下面的解说更加清楚明白,这里还是要简单描述一下。

MapReduce是什么


MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。

——百度百科

是不是还没看懂?用一句话总结一下:

MapReduce是一种适用于大数据下分布式并行计算的编程模型,只要按照规定完成Map(分发数据)和Reduce(处理数据)两部分工作,就可以快速得出结果。

MapReduce的运行机制


从MapReduce的名字以及上面的介绍中,应该也可以知道,MapReduce实现中最重要的两个概念:Map和Reduce。

Map

Map的任务是:处理原始数据、为数据打标签、对数据进行分发(严格来说这并不完全是map的职责)

处理原始数据

这一阶段是对原始数据进行预处理的阶段,可以从行和列两个角度来考虑。

行:比如我们需要对数据按照时间过滤,只选择本周一的数据,其他数据过滤掉不处理。

列:比如原始数据有10列,我们只需要其中的5列,其他列过滤掉不处理。

举例:

hdfs上有一周的支出数据,我们想统计周一周二的支出情况,接下来我们会一步步解释这个过程。下图是其中一部分记录:


map:处理原始数据

可以看出过滤掉了非周一周二的数据,并且删除了使用人的字段。

为数据打标签

map处理完原始数据之后,接下来就要将数据分组,从而分配给合适的reduce去处理,分组的第一步就是打标签。

举例:


map:为数据打标签

可以看出,对每一条数据加了一条对应天数的标签。

对数据进行分发

打完标签之后,就需要对数据进行分发,严格来说,这并不完全属于Map的职责,其中也用到了一个神秘的中间环节:shuffle。不过入门来看,我们就单纯任务这属于Map。

分发的意思是,打完标签之后,要对数据进行分类处理,然后再发送给Reduce;分类的依据,就是上面对其打的自定义标签。

举例:


map:分发有标签的数据

可以看出,对每一条数据,按照标签分配,由原来的一个列表,变成了现在的两个列表。

Map阶段到此完成,接下来的任务就是要等着Reduce来取数了。


Reduce

Reduce的任务是:拉取Map分类好的数据(这也并不完全是Reduce的职责)、执行具体的计算

拉取Map分类好的数据

之前说到,Map已经将数据分类,我们直接拉取Reduce需要的数据就好了;但是要注意的是,我们是在一个分布式的环境中执行的任务,所以,Reduce的数据来源可能是多个Map中属于自己的块。

举例:


reduce:获取map分发的数据

可以看到,Reduce按照Map分类的key拉取到了自己应该处理的当日数据。

执行具体的计算

Reduce在拿到所有自己的数据之后,接下来就可以执行自定义的计算逻辑了,最简单的就是计数、去重。

举例:


reduce:执行具体的计算

可以看到,Reduce已经完成了所需要的单日支出计算功能。

说明

Map和Reduce的职责并不是完全绝对的,比如过滤操作可以在Map,也可以在Reduce,只是因为在Map做可以减少传输的数据量,减少网络IO压力和时间消耗,所以做了上述的分工。


拯救你于水火之中


如果以上说明还不够形象的话,那么可以参考下面这句话:

如果我们的任务是数清楚一袋子水果糖里,不同口味的糖有多少块。那么Map就是把糖分类,比如苹果味的放在第一个盘子里,草莓味的放在第二个盘子里;而Reduce就是执行的具体的计算任务,比如一个人数第一个盘子里的苹果味糖有几块,另一个人数第二个盘子里的草莓味糖有几块。最后通过这两个阶段来完成最开始的目标。


图解MapReduce原理


硬核,慎入!

之前说的原理更多的是从单个Map或者Reduce角度进行讲解的,接下来我们从整个集群的角度去看一下一个MapReduce任务的具体执行过程。

不说废话,先上图。

MapReduce工作原理原理

1 map先从HDFS上读取不同的文件,然后对其进行map操作,生成一个个带有标签(也就是key)的数据块。

2 带有相同标签(key)的数据块,会被分配到同一个Reduce上进行操作,从而得到最终结果,并将最终结果写回HDFS。

再看一个更细节一点的:单词计数的MapReduce执行过程


单词计数的MapReduce流程

1 可以看到因为不是自带分区的文件,而是文本文件,所以多了一个拆分的步骤。

2 接下来对分割的文本进行Map阶段的操作,其分发的标签(key)是单词本身,分发的内容是每一段文本里出现该单词的数量。

3 接下来会进行一个分发操作,即相同标签(key)的数据会被收集到一起。

4 Reduce对收集之后分配过来的数据进行处理,最终结果汇总,就是单词计数的结果。


看到这里,相信你已经对MapReduce的原理有了深刻的理解。有关深入学习的部分,请学习下面的参考文章,希望对你有所帮助,谢谢♪(・ω・)ノ。


文集链接

30分钟学会java编写mapreduce

文章链接

5分钟掌握大数据:MapReduce

Java的MapReduce实现:Mapper详解

Java的MapReduce实现:Reduce详解

Java的MapReduce实现:Combine详解

Java的MapReduce之计数器使用


参考文章

https://blog.csdn.net/u013063153/article/details/72357560

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,110评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,443评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,474评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,881评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,902评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,698评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,418评论 3 419
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,332评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,796评论 1 316
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,968评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,110评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,792评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,455评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,003评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,130评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,348评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,047评论 2 355

推荐阅读更多精彩内容