MapReduce 教程
MapReduce 是一种在 Hadoop 后台运行的编程范式,可提供可扩展性和简单的数据处理解决方案。本教程解释了 MapReduce 的功能以及它如何分析大数据。
MapReduce 是一种编程模型,用于编写可以在多个节点上并行处理大数据的应用程序。 MapReduce 提供用于分析大量复杂数据的分析功能。
什么是大数据?
大数据是无法使用传统计算技术处理的大型数据集的集合。例如,Facebook 或 Youtube 需要它每天收集和管理的数据量,就属于大数据的范畴。然而,大数据不仅涉及规模和数量,还涉及以下一个或多个方面——速度、多样性、数量和复杂性。
为什么是 MapReduce?
传统的企业系统通常有一个中央服务器来存储和处理数据。下图描绘了传统企业系统的示意图。传统模型当然不适合处理海量的可扩展数据,标准数据库服务器也无法容纳。此外,集中式系统在同时处理多个文件时会产生过多的瓶颈。
Google 使用一种称为 MapReduce 的算法解决了这个瓶颈问题。 MapReduce 将一个任务分成小部分,并将它们分配给多台计算机。之后,将结果集中到一处,并进行整合,形成结果数据集。
MapReduce 是如何工作的?
MapReduce 算法包含两个重要任务,即 Map 和 Reduce。
Map 任务获取一组数据并将其转换为另一组数据,其中各个元素被分解为元组(键值对)。
Reduce 任务将 Map 的输出作为输入,并将这些数据元组(键值对)组合成一组较小的元组。
reduce 任务总是在 map 作业之后执行。
现在让我们来看看请查看每个阶段并尝试了解它们的重要性。
输入阶段-这里我们有一个记录读取器,它翻译输入文件中的每条记录,并将解析后的数据以键值对的形式发送到映射器。
Map-Map 是一个用户定义的函数,它采用一系列键值对并处理每个键值对以生成零个或多个键值对。
中间键-映射器生成的键值对称为中间键。
Combiner-组合器是一种本地化简器,它将映射阶段的相似数据分组为可识别的集合。它将映射器的中间键作为输入,并应用用户定义的代码在一个映射器的小范围内聚合值。它不是主要 MapReduce 算法的一部分;它是可选的。
Shuffle and Sort-Reducer 任务从 Shuffle 和 Sort 步骤开始。它将分组的键值对下载到运行 Reducer 的本地机器上。各个键值对按键排序到更大的数据列表中。数据列表将等效键组合在一起,以便在 Reducer 任务中轻松迭代它们的值。
Reducer-Reducer 将分组的键值对数据作为输入,并对它们中的每一个运行一个 Reducer 函数。在这里,数据可以通过多种方式进行聚合、过滤和组合,并且需要进行广泛的处理。执行结束后,它会向最后一步提供零个或多个键值对。
输出阶段-在输出阶段,我们有一个输出格式化程序,用于转换来自 Reducer 函数的最终键值对,并使用记录编写器将它们写入文件。
让我们试着借助一个小图来理解 Map &f Reduce 这两个任务-
MapReduce-示例
让我们举一个真实世界的例子来理解 MapReduce 的力量。 Twitter 每天接收大约 5 亿条推文,即每秒近 3000 条推文。下图显示了 Tweeter 如何在 MapReduce 的帮助下管理其推文。
如图所示,MapReduce 算法执行以下操作-
Tokenize-将推文标记为标记映射并将它们写入键值对。
Filter-从标记映射中过滤掉不需要的词,并将过滤后的映射写为键值对。
Count-每个单词生成一个令牌计数器。
Aggregate Counters-将类似计数器值的聚合准备成小的可管理单元。