MapReduce 教程
-
MapReduce
MapReduce 是一种编程范例,在Hadoop的后台运行,以提供可伸缩性和简单的数据处理解决方案。本教程介绍了MapReduce的功能以及它如何工作以分析大数据。 -
什么是大数据?
大数据是无法使用传统计算技术处理的大型数据集的集合。例如,Facebook或Youtube每天需要其收集和管理的数据量可能属于大数据类别。但是,大数据不仅涉及规模和数量,还涉及以下一个或多个方面:速度,多样性,数量和复杂性。 -
为什么选择MapReduce?
传统企业系统通常具有一个集中式服务器来存储和处理数据。下图描绘了传统企业系统的示意图。传统模型肯定不适合处理大量可伸缩数据,并且标准数据库服务器无法容纳传统模型。而且,集中式系统在同时处理多个文件时会造成太多瓶颈。Google 使用称为 MapReduce 的算法解决了这一瓶颈问题。MapReduce将任务分成小部分,并将它们分配给许多计算机。之后,将结果收集到一处并进行整合以形成结果数据集。 -
MapReduce如何工作?
MapReduce算法包含两个重要任务,即Map和Reduce。- Map任务获取一组数据并将其转换为另一组数据,其中各个元素分解为元组(键-值对)。
- Reduce任务将Map的输出作为输入,并将这些数据元组(键值对)组合为较小的元组集。
Reduce 任务始终在 Map 作业之后执行。现在让我们仔细研究每个阶段,并尝试理解它们的重要性。- Input Phase −在这里,我们有一个记录读取器,它可以转换输入文件中的每个记录,并将解析的数据以键值对的形式发送到映射器。
- Map − Map是用户定义的函数,它接受一系列键值对并处理它们中的每个键值对以生成零个或多个键值对。
- Intermediate Keys − 它们由映射器生成的键值对称为中间键。
- Combiner − 组合器是一种本地化的Reducer,它将来自映射阶段的相似数据分组为可识别的集合。它以来自映射器的中间键为输入,并应用用户定义的代码以在一个映射器的较小范围内聚合值。它不是主要MapReduce算法的一部分;它是可选的。
- Shuffle and Sort − Reducer任务从“随机播放和排序”步骤开始。它将分组的键值对下载到运行Reducer的本地计算机上。各个键值对按键分类到较大的数据列表中。数据列表将等效键分组在一起,以便可以在Reducer任务中轻松迭代其值。
- Reducer − Reducer将成组的键值对数据作为输入,并在每个数据上运行Reducer函数。此处,可以通过多种方式聚合,过滤和组合数据,并且需要进行广泛的处理。一旦执行结束,它将为最终步骤提供零个或多个键值对。
- Output Phase − 在输出阶段,我们有一个输出格式化程序,可以转换来自Reducer函数的最终键/值对,并使用记录编写器将它们写入文件中。
让我们尝试借助一个小图来理解Map&f Reduce的两个任务- -
MapReduce-示例
让我们以一个真实的例子来理解MapReduce的功能。Twitter每天收到约5亿条推文,即每秒近3000条推文。下图显示了Tweeter如何在MapReduce的帮助下管理其推文。如图所示,MapReduce算法执行以下操作-- Tokenize − 将推文标记化为标记映射,并将它们写为键值对。
- Filter − 从令牌映射中过滤掉不需要的单词,并将过滤后的映射写为键-值对。
- Count − 每个单词生成一个令牌计数器。
- Aggregate Counters − 将相似的计数器值汇总到小的可管理单位中。
-
听众
本教程是为渴望使用Hadoop框架学习大数据分析基础知识并成为Hadoop开发人员的专业人员准备的。软件专业人员,分析专业人员和ETL开发人员是本课程的主要受益者。希望本教程的读者对Core Java的基本知识有很好的了解,并且他们事先接触过任何Linux操作系统版本。