美文网首页
Map Reduce

Map Reduce

作者: 陈菲TW | 来源:发表于2020-04-28 11:21 被阅读0次

大批量数据处理的基本思路是对数据进行分片,分而治之,从而达到把复杂问题简单化的目的。大数据中涉及数据的计算与存储,二者相辅相成,计算需要数据,要么来自实时数据(流数据),要么来自存储的数据;而计算的结果也是需要存储的。对于计算,就是对计算任务进行切片,每个节点算一些,最终汇总;对于存储,每个节点存一部分数据。大数据处理必然通过分布式系统进行,各个子系统为了完成共同的任务而协调工作,系统间通过网络通信。用多台廉价的机器完成单个计算机无法完成的计算、存储任务。

2003年,Jeff Dean和Sanjay Ghemawat发表了革命性论文MapReduce:Simplified Data Processing on Large Clusters,首次提出了Map-Reduce编程模型,即第一代大数据计算引擎。在随后的十年,MapReduce在Google内广泛使用。Map Reduce也是Hadoop的核心。

MapReduce就是把任务分解成子任务,由Master调度器分配到多台mapper机器执行任务,任务完成后mapper反馈结果到reducer进行汇总。比如我们要数图书馆中的所有书。你数1号书架,我数2号书架。这就是“Map”。我们人越多,数书就更快。现在我们到一起,把所有人的统计数加在一起。这就是“Reduce”。

Map-Reduce

mapper的输出是键值对,key对应类别。 reducer拿到的都是同类数据。分为3个阶段:1)Map阶段:读数据,数据来源可能是文本文件,表格,MySQL数据库;输出是键值对;2)Shuffle阶段:把键值对进行归类,也就是把所有相同的键的键值对归为一类。这个步骤的输出是分类后的键值对数据流;3)Reduce阶段: 输入是shuffle的输出。对值进行“置换”。这些置换通常指的的是值的聚合或者什么也不处理,然后把键值对写入数据库、表格或者文件中。

分配子任务时需要考虑信息处理的本地化,哪台机器持有相应要处理的数据,就负责该部分的数据的处理、计算,从而减少网络通讯负担。另外,还需要考虑某个机器出现问题时的异常处理。

Map Reduce可用于统计单词词频,例如微博前10的热搜词汇。

MapReduce作为分布式数据处理的开山鼻祖,虽然有很多缺陷,但是它的思想不仅没有过时,而且还影响了新的数据处理系统的设计,如Spark,Storm等。传统的MapReduce任务之所以运行速度慢,主要是由于需要将计算的中间结果落地到硬盘这种稳定的存储介质中来防止运行结果丢失。

相关文章

网友评论

      本文标题:Map Reduce

      本文链接:https://www.haomeiwen.com/subject/avfvwhtx.html