MapReduce - 简介

MapReduce是一种编程模型,用于编写可在多个节点上并行处理大数据的应用程序. MapReduce为分析大量复杂数据提供了分析功能.

什么是大数据?

大数据是大数据集的集合,不能是使用传统计算技术处理.例如,Facebook或Youtube需要每天收集和管理的数据量可归属于大数据类别.然而,大数据不仅涉及规模和数量,还涉及以下一个或多个方面 : 速度,多样性,体积和复杂性.

为什么选择MapReduce?

传统企业系统通常有一个集中的服务器来存储和处理数据.下图描绘了传统企业系统的示意图.传统模型当然不适合处理大量可伸缩数据,并且不能被标准数据库服务器容纳.此外,集中式系统在同时处理多个文件时会产生太多瓶颈.

传统企业系统视图

Google使用名为MapReduce的算法解决了这个瓶颈问题. MapReduce将任务分成小部分并将它们分配给许多计算机.之后,结果将在一个地方收集并整合以形成结果数据集.

集中系统

MapReduce如何工作?

MapReduce算法包含两个重要任务,即Map和Reduce.

  • Map任务获取一组数据并将其转换为另一组数据,其中各个元素被分解为元组(键值对).

  • Reduce任务将Map的输出作为输入,并将这些数据元组(键值对)组合成一组较小的元组.

减少任务总是在地图作业之后执行.

现在让我们仔细看看每个阶段并尝试了解它们的意义.

阶段

  • 输入阶段 : 这里我们有一个Record Reader,它可以转换输入文件中的每条记录,并以键值对的形式将解析后的数据发送给映射器.

  • 地图 :  Map是一个用户定义的函数,它接受一系列键值对并处理它们中的每一个以生成零个或多个键值对.

  • 中级密钥 : 它们由映射器生成的键值对称为中间键.

  • 组合器 : 组合器是一种局部Reducer,它将来自map阶段的类似数据分组为可识别的集合.它将来自映射器的中间键作为输入,并应用用户定义的代码来聚合一个映射器的小范围内的值.它不是主要MapReduce算法的一部分;它是可选的.

  • 随机和排序 :  Reducer任务从Shuffle and Sort步骤开始.它将分组的键值对下载到运行Reducer的本地计算机上.各个键值对按键排序为更大的数据列表.数据列表将等效键组合在一起,以便可以在Reducer任务中轻松迭代它们的值.

  • Reducer :  Reducer将分组的键值配对数据作为输入,并在每个数据上运行Reducer函数.这里,数据可以以多种方式聚合,过滤和组合,并且需要广泛的处理.执行结束后,它会为最后一步提供零个或多个键值对.

  • 输出阶段 : 在输出阶段,我们有一个输出格式化程序,它从Reducer函数转换最终的键值对,并使用记录编写器将它们写入文件.

让我们尝试理解两个任务Map& f Reduce借助小图和减号;

MapReduce工作

MapReduce-Example

让我们以一个真实的例子来理解MapReduce的强大功能. Twitter每天收到约5亿条推文,即每秒近3000条推文.下图显示了Tweeter如何在MapReduce的帮助下管理其推文.

MapReduce示例

如图所示,MapReduce算法执行以下操作 :

  • Tokenize : 将推文标记为令牌地图并将其写为键值对.

  • 过滤器 : 从令牌地图中过滤掉不需要的单词,并将过滤后的地图写为键值对.

  • 计数 : 每个单词生成一个令牌计数器.

  • 聚合计数器 : 将类似计数器值的总和准备为小的可管理单元.