首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

hadoop学习笔记之二:MapReduce根本编程

2013-11-08 
hadoop学习笔记之二:MapReduce基本编程原文地址:http://qa.taobao.com/?p10523??引言在本系列的上篇文章

hadoop学习笔记之二:MapReduce基本编程

原文地址:http://qa.taobao.com/?p=10523

?

?

引言
在本系列的上篇文章中介绍了Hadoop的基本概念和架构,本文将通过一个实例演示MapReduce基本编程。在继续进行前希望能重温下前面的内容,至少理解这张图是怎么回事。

实践

  • 创建maven工程并加入hadoop依赖


    我们选用maven来管理工程,用自己喜爱的m2eclipse插件在eclipse里创建或在命令行里创建一个工程。在pom.xml里加入hadoop依赖。

    ?

    ?

    public class WordCount {  public static void main(String[] args) throws Exception {     Configuration conf = new Configuration();        String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();         if (otherArgs.length != 2) {           System.err.println("Usage: wordcount  ");           System.exit(2);         }         /**创建一个job,起个名字以便跟踪查看任务执行情况**/         Job job = new Job(conf, "word count");         /**当在hadoop集群上运行作业时,需要把代码打包成一个jar文件(hadoop会在集群分发这个文件),通过job的setJarByClass设置一个类,hadoop根据这个类找到所在的jar文件**/        job.setJarByClass(WordCount.class);        /**设置要使用的map、combiner、reduce类型**/        job.setMapperClass(WordCountMapper.class);        job.setCombinerClass(WordCountReducer.class);        job.setReducerClass(WordCountReducer.class);       /**设置map和reduce函数的输入类型,这里没有代码是因为我们使用默认的TextInputFormat,针对文本文件,按行将文本文件切割成 InputSplits, 并用 LineRecordReader 将 InputSplit 解析成 <key,value&gt: 对,key 是行在文件中的位置,value 是文件中的一行**/        /**设置map和reduce函数的输出键和输出值类型**/        job.setOutputKeyClass(Text.class);        job.setOutputValueClass(IntWritable.class);        /**设置输入和输出路径**/        FileInputFormat.addInputPath(job, new Path(otherArgs[0]));        FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));       /**提交作业并等待它完成**/        System.exit(job.waitForCompletion(true) ? 0 : 1);      }}
    ?基本上完成一个MapReduce程序就这么简单,复杂的在于job的配置有着复杂的属性参数,如文件分割策略、排序策略、map输出内存缓冲区的大小、工作线程数量等,深入理解掌握这些参数才能使自己的MapReduce程序在集群环境中运行的最优。

    小结

    本文通过一个实例说明了MapReduce的基本编程模型,希望通过此能加深对MapReduce的理解,在后面的文章中将介绍如何测试MapReduce及如何把作业运行起来。

    ?

    ?

    ?

    ?

  • 热点排行