下面是map函数
-
importjava.io.IOException;
-
importjava.util.StringTokenizer;
-
-
importorg.apache.hadoop.io.IntWritable;
-
importorg.apache.hadoop.io.Text;
-
importorg.apache.hadoop.mapreduce.Mapper;
-
-
publicclassMapperClassextendsMapper<Object,Text,Text,IntWritable>{
-
,类型需一致
-
publicTextkeytext=newText("text");
-
publicIntWritableintvalue=newIntWritable(1);
-
@Override
-
protectedvoidmap(Objectkey,Textvalue,
-
Contextcontext)
-
throwsIOException,InterruptedException{
-
-
Stringstr=value.toString();
-
-
StringTokenizerstringTokenizer=newStringTokenizer(str);
-
while(stringTokenizer.hasMoreElements()){
-
keytext.set(stringTokenizer.nextToken());
-
context.write(keytext,intvalue);
-
-
}
-
-
}
-
}
reduce函数
-
importjava.io.IOException;
-
importjava.util.Iterator;
-
-
importorg.apache.hadoop.io.IntWritable;
-
importorg.apache.hadoop.io.Text;
-
importorg.apache.hadoop.mapreduce.Reducer;
-
-
publicclassReducerClassextendsReducer<Text,IntWritable,Text,IntWritable>{
-
-
publicIntWritableintValue=newIntWritable(0);
-
-
@Override
-
protectedvoidreduce(Textkey,Iterable<IntWritable>values,
-
Contextcontext)
-
throwsIOException,InterruptedException{
-
-
intsum=0;
-
Iterator<IntWritable>itr=values.iterator();
-
while(itr.hasNext()){
-
-
sum+=itr.next().get();
-
-
}
-
intValue.set(sum);
-
context.write(key,intValue);
-
}
-
}
主函数:
-
importorg.apache.hadoop.conf.Configuration;
-
importorg.apache.hadoop.fs.Path;
-
importorg.apache.hadoop.io.IntWritable;
-
importorg.apache.hadoop.io.Text;
-
importorg.apache.hadoop.mapreduce.Job;
-
importorg.apache.hadoop.mapreduce.lib.input.FileInputFormat;
-
importorg.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
-
importorg.apache.hadoop.util.GenericOptionsParser;
-
-
publicclassWordCount{
-
publicstaticvoidmain(String[]args)throwsException{
-
Configurationconf=newConfiguration();
-
String[]otherArgs=newGenericOptionsParser(conf,args).getRemainingArgs();
-
if(otherArgs.length!=2)
-
{
-
System.err.println("Usage:wordcount<in><out>");
-
System.exit(2);
-
}
-
Jobjob=newJob(conf,"wordcount");
-
job.setJarByClass(WordCount.class);
-
job.setMapperClass(MapperClass.class);
-
job.setCombinerClass(ReducerClass.class);
-
job.setReducerClass(ReducerClass.class);
-
job.setOutputKeyClass(Text.class);
-
job.setOutputValueClass(IntWritable.class);
-
FileInputFormat.addInputPath(job,newPath(otherArgs[0]));
-
FileOutputFormat.setOutputPath(job,newPath(otherArgs[1]));
-
System.exit(job.waitForCompletion(true)?0:1);
-
}
-
}
小结: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>对输出。
分享到:
相关推荐
2. WordCount程序详解 WordCount是MapReduce的经典示例,用于统计文本中单词的出现次数。首先,需要准备输入文件,然后将文件上传至Hadoop的分布式文件系统HDFS。接着,运行WordCount程序,指定输入目录为存放文本的...
基于Hadoop的map-reduce模型,WordCount程序可以将输入的文本文件进行词频统计,并将结果输出到HDFS中。在这个示例程序中,我们使用了Hadoop的map-reduce框架来实现WordCount。 首先,我们需要准备好输入文件和输出...
本篇文档深入浅出地介绍了Hadoop集群的WordCount运行详解,从MapReduce理论到WordCount程序的运行,再到源码分析,内容丰富且详细,对于想要入门和深入了解Hadoop分布式计算和MapReduce模型的读者来说,是一份宝贵的...
**Spark上的WordCount程序详解** Spark作为一个分布式计算框架,提供了高效、灵活的数据处理能力。在Spark上实现WordCount是入门的经典示例,它演示了如何处理大规模文本数据并进行简单的统计分析。在这个程序中,...
通过上述步骤,我们可以深入了解Hadoop集群中如何使用MapReduce模型执行WordCount程序,以及如何查看和分析其执行过程和结果。这不仅有助于理解MapReduce的基本原理,也为后续更复杂的大数据处理任务提供了基础。
本文档主要讲解了Hadoop集群的MapReduce编程模型和WordCount程序的运行详解。下面是相关的知识点: 1. MapReduce编程模型: * MapReduce采用的“分而治之”的思想,把对大规模数据集的操作,分发给一个主节点管理...
【标题】:在Hadoop平台上部署WordCount程序的详解 【描述】:本实验旨在让学生掌握如何在Hadoop平台上部署并运行WordCount程序,这是Hadoop入门的经典案例,旨在统计文本中的单词出现次数。通过实践,学生将了解...
在学术研究中,WordCount程序可以用来验证新Hadoop平台的性能、稳定性,或者对比不同优化策略的效果。通过运行WordCount并分析执行时间、资源利用率等指标,研究人员可以评估并优化Hadoop集群的配置。 五、Hadoop-...
WordCount是Hadoop自带的亦例程序之一,整个程序虽然简单却涵盖了 MapReduce 的最基本使用方法。一般我们学习一门程序设计语言,最开始上手的程序都是“HelloWorld”, 可以说 WordCount 就是学习掌握 Hadoop ...
WordCount是Hadoop生态系统中最经典的示例程序,用于统计文本数据中单词出现的频率。它展示了MapReduce编程模型的基本工作原理,这也是分布式大数据处理的核心。在这个程序中,"Map"阶段将原始输入数据拆分成键值对...
在大数据处理领域,Hadoop 是一个不可或缺的名字,而 WordCount 是 Hadoop 的经典示例程序,它用于统计文本中单词出现的频率。这篇博客将对 WordCount 的源码进行初步解析,帮助初学者理解 Hadoop MapReduce 的工作...
WordCount程序通常包含以下几个核心部分:输入数据的准备、Mapper类的实现、Reducer类的实现以及程序的驱动代码。 #### 输入数据准备 在执行WordCount程序之前,首先需要准备一组文本文件作为输入数据。这些文本...
Hadoop开发WordCount源码程序详细讲解,每一行都带注释说明。
#### 一、Hadoop简介与WordCount程序的重要性 Hadoop 是一个由Apache基金会所开发的分布式系统基础架构。它能够处理非常庞大的数据集,并且能够在集群上运行,通过将大数据分割成小数据块进行并行处理来实现高效的...
本文将详细解析这个简单的WordCount程序,帮助初学者快速入门Hadoop。 一、Hadoop简介 Hadoop是Apache基金会的一个开源项目,基于Java实现,主要设计用于处理和存储大规模数据。其核心包括两个主要组件:HDFS...
WordCount程序分为两个阶段:Map阶段和Reduce阶段。在Map阶段,输入的数据(通常是文本文件)被分割成多个小块,每个块由一个Map任务处理。Map任务将输入文本逐行读取,然后对每一行进行分词,生成键值对(<单词,1>...
在开始打包之前,确保已经创建了一个包含WordCount程序的项目,并且所有的依赖库都已经正确配置。接下来,我们将详细介绍如何使用Eclipse对项目进行打包。 1. **选择打包选项** 在Eclipse中,首先选择“File”...
通过学习Hadoop的安装与配置,hdfs常用命令,WordCount程序详解,Shuffle过程详解,WordCount程序结果分析,Hadoop,HDFS,MapReduce,NameNode和DataNode,yarn,ResourceManager,NodeManager的概念等让大家对Hadoop和...
### Ubuntu上运行Hadoop WordCount实例详解 #### 一、环境搭建与配置 在Ubuntu系统上部署并运行Hadoop WordCount实例,首先需要确保已经安装了Hadoop环境,并且版本为hadoop-0.20.2。此版本较旧,主要用于教学或...
#### 六、运行WordCount程序 1. **修改与编译WordCount.java**: - 需要在Hadoop-1.2.1源码包中的`src/examples/org/apache/hadoop/examples/WordCount.java`进行必要的修改。 - 编译Java文件,这一步可能会比较...