首页 理论教育 MapReduce技术在分布式数据处理中的应用

MapReduce技术在分布式数据处理中的应用

时间:2023-06-30 理论教育 版权反馈
【摘要】:MapReduce本身就是用于并行处理大数据集的软件框架。MapReduce的根源是函数性编程中的map和reduce函数。MapReduce流程的概念流如图2-3所示。图2-3 MapReduce流程的概念流这里提供一个示例,帮助理解。这便是MapReduce的“威力”;它的并行功能可在任意数量的系统上使用。一个代表客户机在单个主系统上启动的MapReduce应用程序称为JobTracker。类似于NameNode,它是Hadoop集群中惟一负责控制MapReduce应用程序的系统。每个TaskTracker将状态和完成信息报告给JobTracker。

MapReduce技术在分布式数据处理中的应用

最简单的MapReduce应用程序至少包含三个部分:一个map函数、一个reduce函数和一个main函数。main函数将作业控制和文件输入/输出结合起来。在这点上,Hadoop提供了大量的接口抽象类,从而为Hadoop应用程序开发人员提供许多工具,可用于调试和性能度量等。

MapReduce本身就是用于并行处理大数据集的软件框架。MapReduce的根源是函数性编程中的map和reduce函数。它由两个可能包含有许多实例(许多map和reduce)的操作组成。map函数接收一组数据并将其转换为一个键/值对列表,输入域中的每个元素对应一个键/值对。re-duce函数接收map函数生成的列表,然后根据它们的键(为每个键生成一个键/值对)缩小键/值对列表。

MapReduce流程的概念流如图2-3所示。

978-7-111-43496-2-Part01-19.jpg

图2-3 MapReduce流程的概念流

这里提供一个示例,帮助理解。假设输入域是one small step for man,one giant leap for mankind。在这个域上运行map函数将得出以下键/值对列表:

(one,1)(small,1)(step,1)(for,1)(man,1)

(one,1)(giant,1)(leap,1)(for,1)(mankind,1)(www.xing528.com)

如果对这个键/值对列表应用reduce函数,将得到以下一组键/值对:

(one,2)(small,1)(step,1)(for,2)(man,1)(giant,1)(leap,1)(mankind,1)

结果是对输入域中的单词进行计数,这无疑对处理索引十分有用。但是,现在假设有两个输入域:第一个是one small step for man;第二个是one giant leap for mankind。可以在每个域上执行map函数和reduce函数,然后将这两个键/值对列表应用到另一个reduce函数,这时得到与前面一样的结果。换句话说,可以在输入域并行使用相同的操作,得到的结果是一样的,但速度更快。这便是MapReduce的“威力”;它的并行功能可在任意数量的系统上使用。图2-4以区段和迭代的形式演示了这种思想。

978-7-111-43496-2-Part01-20.jpg

图2-4 显示处理和存储的物理分布的Hadoop集群

现在回到Hadoop上,它是如何实现这个功能的?一个代表客户机在单个主系统上启动的MapReduce应用程序称为JobTracker。类似于NameNode,它是Hadoop集群中惟一负责控制MapReduce应用程序的系统。在应用程序提交之后,将提供包含在HDFS中的输入和输出目录。JobTracker使用文件块信息(物理量和位置)确定如何创建其他TaskTracker从属任务。MapReduce应用程序被复制到每个出现输入文件块的节点,将为特定节点上的每个文件块创建一个惟一的从属任务。每个TaskTracker将状态和完成信息报告给JobTracker。图2-4显示了一个示例集群中的工作分布。

Hadoop的这个特点非常重要,因为它并没有将存储移动到某个位置以供处理,而是将处理移动到存储位置。这通过根据集群中的节点数调节处理,因此支持高效的数据处理

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈