作者:禅与计算机程序设计艺术
1.简介
在这篇文章中,我们将学习如何利用 Hadoop 的 MapReduce 编程模型进行分布式计算,并提出一些解决实际问题的经验。MapReduce 是 Hadoop 中的一种编程模型,它把一个大的任务分成多个小任务,并通过 Map 和 Reduce 操作把它们映射到不同的节点上执行,最后再汇总得到结果。正如它的名字一样,MapReduce 模型由两个阶段组成,分别是 Map 和 Reduce。
首先,Map 将输入数据集中的每一个元素映射成为一对键值对(key-value pair),其中 key 为元素的一个特征或标识符,而 value 为该特征的值。然后,所有的键值对会根据 key 被排序、分组,并分配到相同的机器上,然后这些机器上的进程会读取自己所分配到的键值对。其次,Reduce 将各个节点上的键值对合并起来,生成最终的输出结果。
因此,整个过程可以概括如下:
1) 数据集输入到 HDFS (Hadoop Distributed File System)
2) Map 函数处理输入的数据,产生中间键值对
3) Shuffle 和 Sort 操作:当各个 mapper 产生中间键值对后,需要进行 shuffle 和 sort 操作,shuffle 可以理解为数据的重新分配,sort 就是对 mapper 生产的中间键值对进行整体排序。
4) Reducer 对中间键值对进行合并,产生最终结果
5) 输出结果
基于以上步骤,MapReduce 编程模型使得巨大的海量数据集可以在集群上快速地进行分