`

Hadoop MapReduce WordCount程序编写

 
阅读更多
package rock.lee.wordcount;

import java.io.IOException;
import java.util.StringTokenizer;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class MyWordCount {

	/**
	 * @author Rock Lee
	 * 
	 * @Description 
	 * LongWritable,输入
	 * key类型 Text, 
	 * 输入value类型 
	 * Text, 输出key类型
	 * IntWritable,输出vlaue类型
	 */
	static class MyMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
		private static final IntWritable ONE = new IntWritable(1);

		@Override
		protected void map(LongWritable key, Text value,
				Mapper<LongWritable, Text, Text, IntWritable>.Context context)
				throws IOException, InterruptedException {

			//读取每行的数据
			String lineValue = value.toString();
			//对每行数据进行分割\r\n\t
			StringTokenizer stzer = new StringTokenizer(lineValue);
			Text text = new Text();
			while (stzer.hasMoreTokens()) {
				//获取分割后的每个值
				String val = stzer.nextToken();
				//key值
				text.set(val);
				//key-->value
				context.write(text, ONE);
			}
		}
	}
	
	/**
	 * 
	 * @author Rock Lee
	 *  
	 * @Description
	 */
	static class MyReduce extends Reducer<Text, IntWritable, Text, IntWritable> {

		@Override
		protected void reduce(Text key, Iterable<IntWritable> values,Reducer<Text, IntWritable, Text, IntWritable>.Context context)
				throws IOException, InterruptedException {
			int sum = 0;
			for (IntWritable val : values) {
				sum+= val.get();
			}
			context.write(key, new IntWritable(sum));
		}
	}

	public static void main(String[] args) throws Exception {
		//获取配置信息
		Configuration configuration = new Configuration();
		
		//创建任务,设置名称
		Job job = new Job(configuration,"WC");
		
		//设置任务运行类
		job.setJarByClass(MyWordCount.class);
		
		//设置Mapper和Reducer类
		job.setMapperClass(MyMapper.class);
		job.setReducerClass(MyReduce.class);
		
		//设置输入/输出路径
		FileInputFormat.addInputPath(job, new Path(args[0]));
		FileOutputFormat.setOutputPath(job, new Path(args[1]));
		
		//设置输出结果key/value类型
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(IntWritable.class);
		
		//提交任务,等待运行结果,并在客户端显示运行信息
		boolean success = job.waitForCompletion(true);
		System.exit(success?0:1);
		
	}
}



运行wc.jar

[root@centos data]# hadoop jar wc.jar /opt/wc/input/ /opt/wc/output
Warning: $HADOOP_HOME is deprecated.

15/06/11 04:29:10 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
15/06/11 04:29:10 INFO input.FileInputFormat: Total input paths to process : 2
15/06/11 04:29:10 INFO util.NativeCodeLoader: Loaded the native-hadoop library
15/06/11 04:29:10 WARN snappy.LoadSnappy: Snappy native library not loaded
15/06/11 04:29:10 INFO mapred.JobClient: Running job: job_201506110402_0006
15/06/11 04:29:11 INFO mapred.JobClient:  map 0% reduce 0%
15/06/11 04:29:32 INFO mapred.JobClient:  map 50% reduce 0%
15/06/11 04:29:42 INFO mapred.JobClient:  map 100% reduce 0%
15/06/11 04:30:05 INFO mapred.JobClient:  map 100% reduce 100%
15/06/11 04:30:05 INFO mapred.JobClient: Job complete: job_201506110402_0006
15/06/11 04:30:05 INFO mapred.JobClient: Counters: 29
15/06/11 04:30:05 INFO mapred.JobClient:   Job Counters
15/06/11 04:30:05 INFO mapred.JobClient:     Launched reduce tasks=1
15/06/11 04:30:05 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=40074
15/06/11 04:30:05 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0
15/06/11 04:30:05 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0
15/06/11 04:30:05 INFO mapred.JobClient:     Launched map tasks=2
15/06/11 04:30:05 INFO mapred.JobClient:     Data-local map tasks=2
15/06/11 04:30:05 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=21707
15/06/11 04:30:05 INFO mapred.JobClient:   File Output Format Counters
15/06/11 04:30:05 INFO mapred.JobClient:     Bytes Written=30
15/06/11 04:30:05 INFO mapred.JobClient:   FileSystemCounters
15/06/11 04:30:05 INFO mapred.JobClient:     FILE_BYTES_READ=96
15/06/11 04:30:05 INFO mapred.JobClient:     HDFS_BYTES_READ=260
15/06/11 04:30:05 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=160215
15/06/11 04:30:05 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=30
15/06/11 04:30:05 INFO mapred.JobClient:   File Input Format Counters
15/06/11 04:30:05 INFO mapred.JobClient:     Bytes Read=44
15/06/11 04:30:05 INFO mapred.JobClient:   Map-Reduce Framework
15/06/11 04:30:05 INFO mapred.JobClient:     Map output materialized bytes=102
15/06/11 04:30:05 INFO mapred.JobClient:     Map input records=4
15/06/11 04:30:05 INFO mapred.JobClient:     Reduce shuffle bytes=102
15/06/11 04:30:05 INFO mapred.JobClient:     Spilled Records=16
15/06/11 04:30:05 INFO mapred.JobClient:     Map output bytes=74
15/06/11 04:30:05 INFO mapred.JobClient:     CPU time spent (ms)=820
15/06/11 04:30:05 INFO mapred.JobClient:     Total committed heap usage (bytes)=413466624
15/06/11 04:30:05 INFO mapred.JobClient:     Combine input records=0
15/06/11 04:30:05 INFO mapred.JobClient:     SPLIT_RAW_BYTES=216
15/06/11 04:30:05 INFO mapred.JobClient:     Reduce input records=8
15/06/11 04:30:05 INFO mapred.JobClient:     Reduce input groups=4
15/06/11 04:30:05 INFO mapred.JobClient:     Combine output records=0
15/06/11 04:30:05 INFO mapred.JobClient:     Physical memory (bytes) snapshot=313032704
15/06/11 04:30:05 INFO mapred.JobClient:     Reduce output records=4
15/06/11 04:30:05 INFO mapred.JobClient:     Virtual memory (bytes) snapshot=1127878656
15/06/11 04:30:05 INFO mapred.JobClient:     Map output records=8



转自:http://mvplee.iteye.com/blog/2218989

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Hadoop mapreduce实现wordcount

    这个文件可能是 Hadoop 官方文档中关于 WordCount 示例的一个章节,详细介绍了如何编写 Map 和 Reduce 函数,以及如何配置和运行 WordCount 作业。可能包括了 Java 代码示例,讲解如何创建 MapReduce 程序,并将其...

    hadoop mapreduce wordcount

    &lt;groupId&gt;com.hadoop.mapreduce&lt;/groupId&gt; &lt;artifactId&gt;wordcount &lt;version&gt;0.0.1-SNAPSHOT &lt;packaging&gt;jar &lt;name&gt;wordcount &lt;url&gt;http://maven.apache.org&lt;/url&gt; &lt;project.build.sourceEncoding&gt;UTF-8 ...

    使用hadoop实现WordCount实验报告.docx

    3. **运行WordCount程序**:调用Hadoop自带的Java程序`hadoop-mapreduce-examples-2.7.7.jar`,指定输入和输出参数。 ### 四、实验结果 成功运行WordCount后,可以在指定的输出文件夹(例如/output)中看到统计...

    hadoop mapreduce 例子项目,运行了单机wordcount

    WordCount程序是Hadoop MapReduce的入门示例,它由两个阶段组成:Map阶段和Reduce阶段。在Map阶段,输入的文本文件被分割成多个块,然后在不同的节点上并行处理。每个节点上的Mapper将读取数据,分割出单词(通常是...

    hadoop 框架下 mapreduce源码例子 wordcount

    WordCount程序的主要任务是统计文本文件中每个单词出现的次数。Map阶段会将输入文本拆分成单词,生成键值对&lt;单词, 1&gt;。Reduce阶段则将相同的单词键值对聚合,累加对应的值,最终输出&lt;单词, 总计次数&gt;。 3. **...

    Java操作Hadoop Mapreduce基本实践源码

    例如,一个简单的WordCount程序可以如下编写: ```java // 定义Mapper类 public static class TokenizerMapper extends Mapper, Text, Text, IntWritable&gt; { private final static IntWritable one = new ...

    hadoop mapreduce编程实战

    * WordCount 程序编写及代码分析 * 新建一个 MapReduce 工程 * 修改源程序 * 上传处理数据 * 运行以及结果分析 * map 程序分析 * reduce 程序分析 * WordCount 主程序分析 MapReduce 编程模型 MapReduce 编程模型...

    hadoop1.2.1修改WordCount并编译

    在编译 WordCount 程序时,我们需要使用 Hadoop 1.2.1 版本下的编译工具,例如 hadoop-1.2.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-1.2.1.jar。我们可以使用以下命令来编译 WordCount 程序: ``` ...

    云计算技术实验报告三运行Hadoop MapReduce程序

    实验中还涉及到了Hadoop自带的`wordcount`程序,这是一个经典的MapReduce示例,用于统计文本文件中各个单词出现的次数。实验者创建了输入文件,上传到HDFS(Hadoop Distributed File System),然后运行`wordcount`...

    hadoop之wordcount例程代码

    运行WordCount程序时,Hadoop会自动将数据分发到集群的各个节点上,每个节点上的TaskTracker会执行对应的Map任务。当Map任务完成,中间结果会被排序和分区,然后传递给Reduce任务。Reduce任务最终将结果写回到HDFS,...

    hadoop运行wordcount实例

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

    hadoop mapreduce helloworld 能调试

    在大数据处理领域,Hadoop MapReduce 是一个至关重要的框架,它允许开发者编写分布式应用程序来处理海量数据。"Hadoop MapReduce HelloWorld 能调试" 的主题意味着我们将深入理解如何设置、运行以及调试 MapReduce ...

    Ubuntu安装Hadoop实现MapReduce里的WordCount

    ### Ubuntu安装Hadoop实现MapReduce里的WordCount #### 核心知识点概述 1. **Ubuntu环境下的基础配置**:包括VMware Tools的安装、JDK的安装与配置。 2. **Hadoop的安装与配置**:包括下载与解压、环境变量配置、...

    Hadoop MapReduce.pdf

    - 使用`hadoop jar wordcount.jar WordCount /user/zwxq/wordcount/input/sample.txt /user/zwxq/wordcount/output`命令执行WordCount程序。 - **步骤5:查看执行结果** - 使用`hadoop fs -ls /user/zwxq/...

    Hadoop之MapReduce编程实例完整源码

    一个自己写的Hadoop MapReduce实例源码,网上看到不少网友在学习MapReduce编程,但是除了wordcount范例外实例比较少,故上传自己的一个。包含完整实例源码,编译配置文件,测试数据,可执行jar文件,执行脚本及操作...

    wordcount-mapreduce:Hadoop MapReduce WordCount 示例应用程序

    关于实现,WordCount通常使用Java编写,利用Hadoop的API。主要涉及到以下几个类: 1. `Mapper`: 这是Map阶段的类,负责将输入行拆分成单词。 2. `Reducer`: 这是Reduce阶段的类,负责聚合单词计数。 3. `...

    一个简单的 Hadoop MapReduce 程序示例.rar

    附件是一个简单的 Hadoop MapReduce 程序示例,用于统计文本文件中单词出现的次数。、 要运行这个程序,你需要将上述代码保存为 .java 文件,然后编译并打包成一个 JAR 文件。之后,你可以使用 Hadoop 的命令行工具...

    大数据实验报告Hadoop编程实现wordcount单词统计程序附源码.doc

    大数据实验报告 Hadoop 编程实现 wordcount 单词统计程序附源码 本实验报告旨在介绍使用 Hadoop 编程实现 wordcount 单词统计程序的步骤和代码实现。实验的目的在于熟悉 Hadoop 虚拟机的安装与环境的配置,初步理解...

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

    实验2的目的是在Hadoop平台上部署WordCount程序,以此来理解和体验云计算的基础应用。这个实验主要涉及以下几个关键知识点: 1. **Linux系统基础**:实验要求学生具备Linux系统的使用知识,包括基本的命令行操作、...

    mapred.zip_hadoop_hadoop mapreduce_mapReduce

    在Hadoop生态系统中,MapReduce是一种分布式计算框架,它允许用户编写并运行处理大量数据的程序。这个"mapred.zip"文件显然包含了与Hadoop MapReduce相关的测试样例、文档和源码,这对于理解MapReduce的工作原理以及...

Global site tag (gtag.js) - Google Analytics