发布日期:2015-12-07 11:43 来源: 标签: 云计算与大数据 Hadoop教程 MapReduce示例 海量数据
最简单的MapReduce应用程序至少包含3个部分:一个Map函数、一个Reduce函数和一个main函数。main 函数将作业控制和文件输入/输出结合起来。在这点上,Hadoop提供了大量的接口和抽象类,从而为Hadoop应用程序开发人员提供许多工具,可用于调试和性能度量等。
Hadoop框架下的mapreduce
     最简单的MapReduce应用程序至少包含3个部分:一个Map函数、一个Reduce函数和一个main函数。main  函数将作业控制和文件输入/输出结合起来。在这点上,Hadoop提供了大量的接口和抽象类,从而为Hadoop应用程序开发人员提供许多工具,可用于调试和性能度量等。 
     MapReduce  本身就是用于并行处理大数据集的软件框架。MapReduce  的根源是函数性编程中的map和 reduce函数。它由两个可能包含有许多实例(许多Map和Reduce)的操作组成。Map  函数接受一组数据并将其转换为一个键/值对列表,输入域中的每个元素对应一个键/值对。Reduce  函数接受  Map函数生成的列表,然后根据它们的键(为每个键生成一个键/值对)缩小键/值对列表。  
1. 示例1 
假设输入域是 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) 
如果对这个键/值对列表应用  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 formankind。您可以在每个域上执行Map函数和Reduce函数,然后将这两个键/值对列表应用到另一个  Reduce函数,这时得到与前面一样的结果。换句话说,可以在输入域并行使用相同的操作,得到的结果是一样的,但速度更快。这便是MapReduce的威力;它的并行功能可在任意数量的系统上使用。 
2. 示例2 
Hadoop提供的范例Wordcount(计算网页中各个单词的数量): 
1)Input:文本内容  <行号,文本内容> 
2)Map:<行号,  文本内容>  List<<单词,  数量1>> 
3)Reduce:<单词, List<数量1>>  <单词,  数量合计> 
4)Output:List<<单词,  数量>> 文本文件 
现在回到Hadoop上,它是如何实现这个功能的? 
      一个代表客户机在单个主系统上启动的  MapReduce 应用程序称为 JobTracker。类似于NameNode,它是Hadoop集群中惟一负责控制MapReduce应用程序的系统。在应用程序提交之后,将提供包含在HDFS中的输入和输出目录。JobTracker使用文件块信息(物理量和位置)确定如何创建其他TaskTracker从属任务。           MapReduce应用程序被复制到每个出现输入文件块的节点。将为特定节点上的每个文件块创建一个惟一的从属任务。每个TaskTracker  将状态和完成信息报告给  JobTracker。图  5-5  显示一个示例集群中的工作分布。

注:在真实的应用环境中需要作到:Namenode与JobTacker要部署在不同的服务器上  

相关评论

专题信息
    Hadoop是Apache开源组织的一个分布式计算开源框架,在很多大型网站上都已经得到了应用,如亚马逊、Facebook和Yahoo等等。Hadoop框架中最核心的设计就是:MapReduce和HDFS。MapReduce的思想是由Google的一篇论文所提及而被广为流传的,简单的一句话解释MapReduce就是“任务的分解与结果的汇总”。HDFS是Hadoop分布式文件系统(Hadoop Distributed File System)的缩写,为分布式计算存储提供了底层支持。本教程对Hadoop做了详解的介绍与讲解,教程中的实例能让大家更快的学习Hadoop,望大家多多支持中国站长网络学院。