`
liujiekasini0312
  • 浏览: 147416 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

WordCount程序详解

 
阅读更多
  1. 输入:hellohadoop
  1. helloword

下面是map函数

  1. importjava.io.IOException;
  2. importjava.util.StringTokenizer;
  3. importorg.apache.hadoop.io.IntWritable;
  4. importorg.apache.hadoop.io.Text;
  5. importorg.apache.hadoop.mapreduce.Mapper;
  6. publicclassMapperClassextendsMapper<Object,Text,Text,IntWritable>{//四个参数的含义,前两个输入,后两个输出
  7. ,类型需一致
  8. publicTextkeytext=newText("text");//定义一个text对象,用来充当中间变量,存储词
  9. publicIntWritableintvalue=newIntWritable(1);//词的个数,刚开始都为1,也可以不定义,直接context.write(keytext,1);
  10. @Override
  11. protectedvoidmap(Objectkey,Textvalue,
  12. Contextcontext)//key即行偏移量,作用不大,主要是value,根据value进行拆分
  13. throwsIOException,InterruptedException{
  14. //获取值
  15. Stringstr=value.toString();
  16. //分隔
  17. StringTokenizerstringTokenizer=newStringTokenizer(str);//StringTokenizer根据空格等分隔字符串到stringTokenizer
  18. while(stringTokenizer.hasMoreElements()){//返回是否还有分隔符,判断是否还有单词
  19. keytext.set(stringTokenizer.nextToken());//nextToken():返回从当前位置到下一个分隔符的字符串。
  20. context.write(keytext,intvalue);//context.write("hello",1)
  21. }
  22. }
  23. }

reduce函数

  1. importjava.io.IOException;
  2. importjava.util.Iterator;
  3. importorg.apache.hadoop.io.IntWritable;
  4. importorg.apache.hadoop.io.Text;
  5. importorg.apache.hadoop.mapreduce.Reducer;
  6. publicclassReducerClassextendsReducer<Text,IntWritable,Text,IntWritable>{//前两个输入:例:(hello,1),后两个输出(hello,2)
  7. publicIntWritableintValue=newIntWritable(0);
  8. @Override
  9. protectedvoidreduce(Textkey,Iterable<IntWritable>values,//这里声明了一个实现Iterator接口的匿名内部类,并返回了内部类的实例
  10. Contextcontext)//它用来与MapReduce系统进行通信,如把map的结果传给reduce处理
  11. throwsIOException,InterruptedException{
  12. //step1
  13. intsum=0;
  14. Iterator<IntWritable>itr=values.iterator();//迭代器,访问容器中的元素,为容器而生
  15. while(itr.hasNext()){
  16. sum+=itr.next().get();//如果有,则加入迭代器中的个数
  17. }
  18. intValue.set(sum);//对于hello,sum是2
  19. context.write(key,intValue);//hello,2
  20. }
  21. }

主函数:

  1. importorg.apache.hadoop.conf.Configuration;
  2. importorg.apache.hadoop.fs.Path;
  3. importorg.apache.hadoop.io.IntWritable;
  4. importorg.apache.hadoop.io.Text;
  5. importorg.apache.hadoop.mapreduce.Job;
  6. importorg.apache.hadoop.mapreduce.lib.input.FileInputFormat;
  7. importorg.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
  8. importorg.apache.hadoop.util.GenericOptionsParser;
  9. publicclassWordCount{
  10. publicstaticvoidmain(String[]args)throwsException{
  11. Configurationconf=newConfiguration();//指定作业执行规范
  12. String[]otherArgs=newGenericOptionsParser(conf,args).getRemainingArgs();
  13. if(otherArgs.length!=2)
  14. {
  15. System.err.println("Usage:wordcount<in><out>");
  16. System.exit(2);
  17. }
  18. Jobjob=newJob(conf,"wordcount");//指定job名称,及运行对象
  19. job.setJarByClass(WordCount.class);
  20. job.setMapperClass(MapperClass.class);//指定map函数
  21. job.setCombinerClass(ReducerClass.class);//是否需要conbiner整合
  22. job.setReducerClass(ReducerClass.class);//指定reduce函数
  23. job.setOutputKeyClass(Text.class);//输出key格式
  24. job.setOutputValueClass(IntWritable.class);//输出value格式
  25. FileInputFormat.addInputPath(job,newPath(otherArgs[0]));//处理文件路径
  26. FileOutputFormat.setOutputPath(job,newPath(otherArgs[1]));//结果输出路径
  27. System.exit(job.waitForCompletion(true)?0:1);
  28. }
  29. }


小结:Hadoop程序处理流程

(1)将文件拆分为splits,并由MapReduce框架自动完成分割,将每一个split分割为<key,value>对

(2)每一<key,value>调用一次map函数,处理后生产新的<key,value>对,由Context传递给reduce处理

(3)Mapper对<key,value>对进行按key值进行排序,并执行Combine过程,将key值相同的value进行合并。最后得到Mapper的最终输出结果

(4)reduce处理,处理后将新的<key,value>对输出。

分享到:
评论

相关推荐

    MapReduce经典例子WordCount运行详解.pdf

    2. WordCount程序详解 WordCount是MapReduce的经典示例,用于统计文本中单词的出现次数。首先,需要准备输入文件,然后将文件上传至Hadoop的分布式文件系统HDFS。接着,运行WordCount程序,指定输入目录为存放文本的...

    Hadoop示例程序WordCount运行及详解

    基于Hadoop的map-reduce模型,WordCount程序可以将输入的文本文件进行词频统计,并将结果输出到HDFS中。在这个示例程序中,我们使用了Hadoop的map-reduce框架来实现WordCount。 首先,我们需要准备好输入文件和输出...

    Hadoop集群-WordCount运行详解.pdf

    本篇文档深入浅出地介绍了Hadoop集群的WordCount运行详解,从MapReduce理论到WordCount程序的运行,再到源码分析,内容丰富且详细,对于想要入门和深入了解Hadoop分布式计算和MapReduce模型的读者来说,是一份宝贵的...

    WordCount_Spark!_spark_wordcount_java_

    **Spark上的WordCount程序详解** Spark作为一个分布式计算框架,提供了高效、灵活的数据处理能力。在Spark上实现WordCount是入门的经典示例,它演示了如何处理大规模文本数据并进行简单的统计分析。在这个程序中,...

    细细品味Hadoop_Hadoop集群(第6期)_WordCount运行详解

    通过上述步骤,我们可以深入了解Hadoop集群中如何使用MapReduce模型执行WordCount程序,以及如何查看和分析其执行过程和结果。这不仅有助于理解MapReduce的基本原理,也为后续更复杂的大数据处理任务提供了基础。

    大数据与云计算培训学习资料 Hadoop集群 细细品味Hadoop_第6期_WordCount运行详解 共18页.pdf

    本文档主要讲解了Hadoop集群的MapReduce编程模型和WordCount程序的运行详解。下面是相关的知识点: 1. MapReduce编程模型: * MapReduce采用的“分而治之”的思想,把对大规模数据集的操作,分发给一个主节点管理...

    实验2-在Hadoop平台上部署WordCount程序1

    【标题】:在Hadoop平台上部署WordCount程序的详解 【描述】:本实验旨在让学生掌握如何在Hadoop平台上部署并运行WordCount程序,这是Hadoop入门的经典案例,旨在统计文本中的单词出现次数。通过实践,学生将了解...

    hadoop集群通用wordcount测试程序

    在学术研究中,WordCount程序可以用来验证新Hadoop平台的性能、稳定性,或者对比不同优化策略的效果。通过运行WordCount并分析执行时间、资源利用率等指标,研究人员可以评估并优化Hadoop集群的配置。 五、Hadoop-...

    WordCount详解

    WordCount是Hadoop自带的亦例程序之一,整个程序虽然简单却涵盖了 MapReduce 的最基本使用方法。一般我们学习一门程序设计语言,最开始上手的程序都是“HelloWorld”, 可以说 WordCount 就是学习掌握 Hadoop ...

    WordCount源码

    WordCount是Hadoop生态系统中最经典的示例程序,用于统计文本数据中单词出现的频率。它展示了MapReduce编程模型的基本工作原理,这也是分布式大数据处理的核心。在这个程序中,"Map"阶段将原始输入数据拆分成键值对...

    WordCount 源码浅析(1)

    在大数据处理领域,Hadoop 是一个不可或缺的名字,而 WordCount 是 Hadoop 的经典示例程序,它用于统计文本中单词出现的频率。这篇博客将对 WordCount 的源码进行初步解析,帮助初学者理解 Hadoop MapReduce 的工作...

    Hadoop集群中WordCount示例

    WordCount程序通常包含以下几个核心部分:输入数据的准备、Mapper类的实现、Reducer类的实现以及程序的驱动代码。 #### 输入数据准备 在执行WordCount程序之前,首先需要准备一组文本文件作为输入数据。这些文本...

    Hadoop开发WordCount源码详细讲解

    Hadoop开发WordCount源码程序详细讲解,每一行都带注释说明。

    hadoop运行wordcount实例

    #### 一、Hadoop简介与WordCount程序的重要性 Hadoop 是一个由Apache基金会所开发的分布式系统基础架构。它能够处理非常庞大的数据集,并且能够在集群上运行,通过将大数据分割成小数据块进行并行处理来实现高效的...

    Hadoop入门脚本WordCount

    本文将详细解析这个简单的WordCount程序,帮助初学者快速入门Hadoop。 一、Hadoop简介 Hadoop是Apache基金会的一个开源项目,基于Java实现,主要设计用于处理和存储大规模数据。其核心包括两个主要组件:HDFS...

    wordCount.zip

    WordCount程序分为两个阶段:Map阶段和Reduce阶段。在Map阶段,输入的数据(通常是文本文件)被分割成多个小块,每个块由一个Map任务处理。Map任务将输入文本逐行读取,然后对每一行进行分词,生成键值对(&lt;单词,1&gt;...

    hadoop wordcount 打包部署

    在开始打包之前,确保已经创建了一个包含WordCount程序的项目,并且所有的依赖库都已经正确配置。接下来,我们将详细介绍如何使用Eclipse对项目进行打包。 1. **选择打包选项** 在Eclipse中,首先选择“File”...

    Java大数据培训学校全套教程-50)Hadoop与MapReduce最入门

     通过学习Hadoop的安装与配置,hdfs常用命令,WordCount程序详解,Shuffle过程详解,WordCount程序结果分析,Hadoop,HDFS,MapReduce,NameNode和DataNode,yarn,ResourceManager,NodeManager的概念等让大家对Hadoop和...

    ubuntu运行hadoop的wordcount

    ### Ubuntu上运行Hadoop WordCount实例详解 #### 一、环境搭建与配置 在Ubuntu系统上部署并运行Hadoop WordCount实例,首先需要确保已经安装了Hadoop环境,并且版本为hadoop-0.20.2。此版本较旧,主要用于教学或...

    hadoop-1.2.1运行WordCount

    #### 六、运行WordCount程序 1. **修改与编译WordCount.java**: - 需要在Hadoop-1.2.1源码包中的`src/examples/org/apache/hadoop/examples/WordCount.java`进行必要的修改。 - 编译Java文件,这一步可能会比较...

Global site tag (gtag.js) - Google Analytics