码迷,mamicode.com
首页 > 其他好文 > 详细

“肢解”Hadoop程序基础模板

时间:2015-12-18 21:10:54      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:

  分布式编程相对复杂,而Hadoop本身蒙上大数据、云计算等各种面纱,让很多初学者望而却步。可事实上,Hadoop是一个很易用的分布式编程框架,经过良好封装屏蔽了很多分布式环境下的复杂问题,因此,对普通开发者来说很容易,容易到可以照葫芦画瓢。

大多数Hadoop程序的编写可以简单的依赖于一个模板及其变种。当编写一个新的MapReduce程序时,我们通常采用一个现有的MapReduce程序,通过修改达到我们希望的功能就行了。对于写大部分的Hadoop程序来说几乎就是照葫芦画瓢。

  使用 Java 语言编写 MapReduce 非常方便,因为 Hadoop 的 API 提供了 Mapper 和 Reducer 抽象类,对开发人员来说,只需要继承这两个抽象类,然后实现抽象类里面的方法就可以了。

  一个继承 Mapper 的静态类 MapClass:
  该类实现了 map(Text key,Text value,Context context)方法,map 方法包含三个参数:
          Text key:每行文件的 key 值(即引用的专利)。
          Text value:每行文件的 value 值(即被引用的专利)。
          Context context:Map 端的上下文。
  map 方法主要就是把字符串解析成 Key-Value的形式,发给 Reduce 端来统计。
  需要注意:此任务中的文件输入格式为 KeyValueTextInputFormat,所以 map 方法可以直接将 key/value 作为输出结果。

  一个继承 Reducer 的静态类 ReduceClass: 
  该类实现了 reduce(Text key, Iterable< Text> values, Context context) 方法,reduce 方法包含三个参数:
          Text key:Map 端输出的 Key 值。
          Iterable< Text> values:Map 端输出的 Value 集合(相同 Key 的集合)。
          Context context:Reduce 端的上下文。
   reduce 方法的主要功能就是获取 map 方法的 key-value 结果,相同的 Key 发送到同一个 reduce 里处理,然后迭代 Key,把 Value 相加,结果写到 HDFS 系统里面。

  驱动方法 run() 解释如下: 
  Configuration 类:
            读取 Hadoop 的配置文件,如 site-core.xml、mapred-site.xml、hdfs-site.xml 等。也可以使用 set 方法进行重新设置,如                                              conf.set("fs.default.name","hdfs://single.hadoop.dajiangtai.com:9000")。

  注意:set 方法设置的值会替代配置文件里面配置的值。
     Job 类:

   表示一个 MapReduce 任务。Job 的构造方法有两个参数,第一个参数为 Configuration,第二个参数为 Job 的名称(等同于任务的名称)。 

  Main调用
表示一个 MapReduce 任务。Job 的构造方法有两个参数,第一个参数为 Configuration,第二个参数为 Job 的名称(等同于任务的名称)。

“肢解”Hadoop程序基础模板

标签:

原文地址:http://www.cnblogs.com/zlslch/p/5058193.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!