📜  MapReduce-简介

📅  最后修改于: 2020-11-30 05:27:56             🧑  作者: Mango


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

什么是大数据?

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

为什么选择MapReduce?

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

传统企业系统视图

Google使用称为MapReduce的算法解决了这一瓶颈问题。 MapReduce将任务分成小部分,并将它们分配给许多计算机。之后,将结果收集到一处并进行整合以形成结果数据集。

集中式系统

MapReduce如何工作?

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

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

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

还原任务始终在映射作业之后执行。

现在让我们仔细研究每个阶段,并尝试理解它们的重要性。

相数

  • 输入阶段-这里有一个记录读取器,它可以转换输入文件中的每个记录,并将解析后的数据以键值对的形式发送到映射器。

  • Map -Map是一个用户定义的函数,它采用一系列键值对并处理每个键值对以生成零个或多个键值对。

  • 中间键-它们由映射器生成的键值对称为中间键。

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

  • 随机播放和排序-Reducer任务从随机播放和排序步骤开始。它将分组的键值对下载到运行Reducer的本地计算机上。各个键值对按键分类到较大的数据列表中。数据列表将等效键分组在一起,以便可以在Reducer任务中轻松迭代其值。

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

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

让我们尝试借助一个小图来理解Map&f Reduce的两个任务-

MapReduce工作

MapReduce-示例

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

MapReduce示例

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

  • 令牌化-将标记化到微博令牌的地图,并将其写入作为键-值对。

  • 过滤器-从令牌映射中过滤不需要的单词,并将过滤后的映射写为键-值对。

  • 计数-每个单词生成一个令牌计数器。

  • 汇总计数器-将类似的计数器值汇总到小的可管理单位中。