`

Hadoop MapReduce程序开发(二)

阅读更多

根据例WordCount写的一个单词计数器

 

Map类

package com.wordcount.map;

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

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;

public class Map extends Mapper<Object, Text, Text, IntWritable> {

	private static Text word = new Text();
	private final static IntWritable one = new IntWritable(1);
	
	
	@Override
	protected void map(Object key, Text value, Context context)
			throws IOException, InterruptedException {
		//value是每一行数据
		StringTokenizer token = new StringTokenizer(value.toString());
		while(token.hasMoreTokens()) {
			word.set(token.nextToken().toLowerCase());
			context.write(word, one);
		}
	}
	
}

 

reduce类

package com.wordcount.reduce;

import java.io.IOException;

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

public class Reduce extends Reducer<Text, IntWritable, Text, IntWritable> {

	private static IntWritable result = new IntWritable();
	
	@Override
	protected void reduce(Text key, Iterable<IntWritable> values, Context context)
			throws IOException, InterruptedException {
		int total = 0;
		for (IntWritable value : values) {
			total += value.get();
		}
		result.set(total);
		context.write(key, result);
	}
	
}

 

配置好eclipse后运行下面类

package com.wordcount.main;


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

import com.wordcount.map.Map;
import com.wordcount.reduce.Reduce;

public class WordCount {

	public static void main(String[] args) throws Exception {
		Configuration conf = new Configuration();
		String[] params = new GenericOptionsParser(conf, args).
											getRemainingArgs();
		if(params.length != 2) {
			System.err.println("params error!");
			System.exit(2);
		}
		
		Job job = new Job(conf, "WordCount");
		job.setJarByClass(WordCount.class);
		
		job.setMapperClass(Map.class);
		job.setMapOutputKeyClass(Text.class);
		job.setMapOutputValueClass(IntWritable.class);
		
		job.setCombinerClass(Reduce.class);
		
		job.setReducerClass(Reduce.class);
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(IntWritable.class);
		
		FileInputFormat.addInputPath(job, new Path(params[0]));
		FileOutputFormat.setOutputPath(job, new Path(params[1]));
		
		System.exit((job.waitForCompletion(true) ? 0 : 1));
	}
}

 

文件words

hello hadoop hello hello world
world cup
just do it
it a test
just try
My World

 

上传 hadoop fs -put .words /data/input

Run Configuration:

Arguments:

hdfs://master:9000/data/input/words hdfs://master:9000/data/output

 

结果

a    1
cup    1
do    1
hadoop    1
hello    3
it    2
just    2
my    1
test    1
try    1
world    3

分享到:
评论

相关推荐

    Hadoop MapReduce实现tfidf源码

    在Hadoop 2.7.7版本中,开发MapReduce程序通常需要使用Java编程语言。你需要导入Hadoop的相关库,创建Mapper和Reducer类,并实现它们的map()、reduce()方法。此外,还需要配置Job参数,如输入路径、输出路径、Mapper...

    大数据 hadoop mapreduce 词频统计

    Hadoop是Apache软件基金会开发的一个开源框架,专门用于处理和存储大规模数据集。Hadoop的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce,这两个组件共同为大数据处理提供了强大的支持。 ...

    Hadoop集群搭建部署与MapReduce程序关键点个性化开发.doc

    本文将详细阐述如何搭建Hadoop集群以及进行MapReduce程序的关键点个性化开发。 首先,我们来看任务1——Hadoop集群的部署。这一步至关重要,因为它为整个大数据处理系统提供了基础架构。在虚拟机中安装Ubuntu Kylin...

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

    实验报告的标题为“云计算技术实验报告三运行Hadoop MapReduce程序”,这表明实验的核心是了解和实践Hadoop MapReduce的编程模型。MapReduce是一种分布式计算框架,常用于处理和生成大规模数据集,由Google提出并被...

    Java操作Hadoop Mapreduce基本实践源码

    在Java中实现MapReduce程序,我们需要创建两个类:`Mapper`和`Reducer`,分别对应Map和Reduce阶段的逻辑。此外,还需要配置Job对象,指定输入输出路径、Mapper和Reducer类以及其他的Hadoop配置参数。 例如,一个...

    hadoop学习本地win测试mapreduce程序,所要用到的环境软件.rar

    它包含必要的工具和资源,帮助你配置Hadoop环境,编写并执行MapReduce程序,从而深入理解分布式计算的核心概念。在学习过程中,记得结合文档资料,实践操作,不断调试和优化,才能更好地掌握这一技术。

    hadoop eclipse mapreduce 下开发所有需要用到的 JAR 包

    在Hadoop生态系统中,Eclipse是一个常用的集成开发环境(IDE),用于编写MapReduce程序。MapReduce是一种编程模型,用于大规模数据集的并行处理。它将大数据任务分解为两个主要阶段:映射(Map)和化简(Reduce)。...

    Hadoop集群配置及MapReduce开发手册

    - **安装Hadoop Eclipse Plugin**: 使用插件可以更方便地进行MapReduce程序的开发和调试。 - **配置Eclipse Plugin**: 设置Eclipse IDE中的Hadoop插件,以连接到Hadoop集群。 **3.2 Eclipse Plugin配置** - **配置...

    使用命令行编译打包运行自己的MapReduce程序 Hadoop2.6.0

    ### 使用命令行编译打包运行自己...以上就是使用命令行编译打包运行自己的MapReduce程序的过程详解,包括了Hadoop 2.6.0版本的变化、编译打包流程、运行命令解析以及使用Eclipse进行开发的方法。希望对初学者有所帮助。

    Hadoop MapReduce开发

    4. 集群测试:MapReduce程序开发完成后,需要在集群上进行测试。这个阶段使用真实的大型数据集,并且通常涉及Hadoop集群的配置和管理。 5. 性能优化:在集群测试阶段,可能会发现性能瓶颈,此时需要对MapReduce程序...

    Hadoop_MapReduce教程.doc

    6. **应用程序开发**: 不局限于Java,Hadoop提供了多种编程语言的支持。如Hadoop Streaming允许使用任意可执行程序(如Shell脚本)作为mapper和reducer,而Hadoop Pipes则是一个C++ API,可用于创建MapReduce应用...

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

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

    mapred.zip_hadoop_hadoop mapreduce_mapReduce

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

    Hadoop_MapReduce教程

    #### 二、Hadoop MapReduce 架构与工作流程 **1. 架构组成** - **JobTracker (Master)**:负责接收来自客户端的作业提交请求,将作业分解为多个任务,并分配给TaskTracker执行。 - **TaskTracker (Slave)**:运行...

    Hadoop MapReduce教程.pdf

    **MapReduce**是Google提出的一种编程模型,用于大规模数据集(多TB甚至PB)的并行运算,设计目标是为非专业程序员提供一种简单的并行程序开发方式。Hadoop则是Apache基金会开发的一个开源框架,其核心组件包括HDFS...

    Hadoop原理与技术MapReduce实验

    (1)熟悉Hadoop开发包 (2)编写MepReduce程序 (3)调试和运行MepReduce程序 (4)完成上课老师演示的内容 二、实验环境 Windows 10 VMware Workstation Pro虚拟机 Hadoop环境 Jdk1.8 二、实验内容 1.单词计数实验...

    window下eclipse中运行mapreduce程序所需要的Hadoop全部jar包

    在Windows环境下,使用Eclipse开发MapReduce程序时,必须确保所有必要的Hadoop库都被正确引入。这是因为MapReduce是Hadoop生态系统中的核心组件,用于处理分布式计算任务。以下是一些关于如何在Eclipse中配置和使用...

    hadoop mapreduce

    开发Hadoop MapReduce程序通常需要使用Java,而Eclipse是一款流行的Java集成开发环境(IDE)。在Eclipse中,你可以创建一个Java项目,然后添加Hadoop相关的依赖库,如hadoop-core或hadoop-client。接下来,编写Map和...

    大数据-hadoop-mapreduce代码

    为了运行这些MapReduce程序,开发者需要设置Hadoop环境,包括安装Hadoop,配置集群参数,以及正确设置Hadoop的环境变量。此外,代码中可能还会涉及到Hadoop的相关API,如`InputFormat`、`OutputFormat`和`...

    hadoop eclipse mapreduce下开发所有需要用到的JAR包

    在Hadoop生态系统中,Eclipse是一个常用的集成开发环境(IDE),用于编写MapReduce程序。MapReduce是一种编程模型,由Google提出,主要用于大规模数据集的并行处理。它将复杂的分布式计算任务分解为两个主要阶段:...

Global site tag (gtag.js) - Google Analytics