Big Data笔记:Hadoop - 初识MapReduce

Map-Reduce是一种可扩展的编程模型,可简化数据的分布式处理。 Map-Reduce包括三个主要步骤:Map,shuffle,Reduce。

Map-Reduce工作的一个简单解释是:它将一个大型任务“委派”给一群人,然后将每个人的努力结果相结合,以产生最终结果。

让我们举个例子来说明一下。你刚刚在你的办公室听到这个好消息,并为所有的同事们举行派对!你决定煮面食吃饭。你的四个朋友,喜欢烹饪,也愿意加入你。准备面食的任务涉及剁蔬菜,烹饪和装盘。

我们来剁蔬菜,这里的生蔬菜就像输入数据,你的朋友相当于计算节点(Compute nodes),而最终切好的蔬菜类似于结果。每个朋友都分配了洋葱,西红柿和辣椒,以剁碎和称重。

你也想知道你在厨房里有多少蔬菜类型。您也想在这种计算过程中切断这些蔬菜。最后,同一类的蔬菜应该在一个大碗里,标签上显示其重量等信息。

Map

你的朋友使用他们的“处理能力(compute power)”来切蔬菜并称重。 他们需要确保不混合不同类型的蔬菜。 所以每个朋友都会生成一个<key,value>映射。每一个映射对应一小碗蔬菜。

Friend X:
<tomatoes, 5 lbs>
<onions, 10 lbs>
<garlic, 2 lbs>

Friend Y:
<onions, 22 lbs>
<green peppers, 5 lbs>

Shuffle

这个阶段也叫做分组。 在这里,你想按照类型蔬菜给蔬菜分组。 您将厨房的不同部分分配给每种蔬菜类型,您的朋友应该对碗进行分组,以便将产品放在一起:

North End of Kitchen:
<tomatoes, 5 lbs>
<tomatoes, 11 lbs>

West End of Kitchen:
<onions, 10 lbs>
<onions, 22 lbs>
<onions, 1.4 lbs>

East End of Kitchen:
<green peppers, 3 lbs>
<green peppers, 10 lbs>

你被朋友通过Mapping and Grouping完成的工作给震撼了!厨房看起来更加有组织。 这个任务的最后阶段是衡量你实际拥有的每种蔬菜的数量。 这让我们进入了Reduce阶段。

Reduce

在这个阶段,你要求你的朋友收集相同类型的物品,把它们放在一个大碗中,并用大量的碗重量标注这个大碗。 你的朋友立即开始“减少”小碗。 最后,你就有了一堆标注良好的大碗。

<tomatoes, 16 lbs>
<green peppers, 13lbs>
<onions, 33.4 lbs>

总结

您的朋友(“计算节点”)刚刚执行了Map-Reduce任务,以帮助您开始烹饪。 由于您正在协调整个练习,所以您是此Map-Reduce任务的“Master”节点。 你的每个朋友都在不同的时间担任Mappers, Groupers ,Reducers的角色。 此示例演示了MapReduce的强大功能。

由Yanring翻译自http://words.sdsc.edu/words-data-science/mapreduce

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 目的这篇教程从用户的角度出发,全面地介绍了Hadoop Map/Reduce框架的各个方面。先决条件请先确认Had...
    SeanC52111阅读 5,693评论 0 1
  • sina mapreduce是一种模式,hadoop是一种框架,是一个实现了mapreduce模式的开源的分布式并...
    橙小汁阅读 5,563评论 0 5
  • MapReduce框架结构## MapReduce是一个用于大规模数据处理的分布式计算模型MapReduce模型主...
    Bloo_m阅读 9,190评论 0 4
  • MapReduce是一个数据处理的编程模型。这个模型很简单,但也不是简单到不能够支持一些有用的语言。Hadoop能...
    单行线的旋律阅读 5,375评论 0 2
  • 每年的高考,都会产生两大亮点:一是高考状元,这个年年有,没什么好讲的。 一个就是五花八门的作弊手段,这种作弊手段道...
    哈真慈阅读 3,365评论 1 1