根据例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 2.7.7版本中,开发MapReduce程序通常需要使用Java编程语言。你需要导入Hadoop的相关库,创建Mapper和Reducer类,并实现它们的map()、reduce()方法。此外,还需要配置Job参数,如输入路径、输出路径、Mapper...
Hadoop是Apache软件基金会开发的一个开源框架,专门用于处理和存储大规模数据集。Hadoop的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce,这两个组件共同为大数据处理提供了强大的支持。 ...
本文将详细阐述如何搭建Hadoop集群以及进行MapReduce程序的关键点个性化开发。 首先,我们来看任务1——Hadoop集群的部署。这一步至关重要,因为它为整个大数据处理系统提供了基础架构。在虚拟机中安装Ubuntu Kylin...
实验报告的标题为“云计算技术实验报告三运行Hadoop MapReduce程序”,这表明实验的核心是了解和实践Hadoop MapReduce的编程模型。MapReduce是一种分布式计算框架,常用于处理和生成大规模数据集,由Google提出并被...
在Java中实现MapReduce程序,我们需要创建两个类:`Mapper`和`Reducer`,分别对应Map和Reduce阶段的逻辑。此外,还需要配置Job对象,指定输入输出路径、Mapper和Reducer类以及其他的Hadoop配置参数。 例如,一个...
它包含必要的工具和资源,帮助你配置Hadoop环境,编写并执行MapReduce程序,从而深入理解分布式计算的核心概念。在学习过程中,记得结合文档资料,实践操作,不断调试和优化,才能更好地掌握这一技术。
在Hadoop生态系统中,Eclipse是一个常用的集成开发环境(IDE),用于编写MapReduce程序。MapReduce是一种编程模型,用于大规模数据集的并行处理。它将大数据任务分解为两个主要阶段:映射(Map)和化简(Reduce)。...
- **安装Hadoop Eclipse Plugin**: 使用插件可以更方便地进行MapReduce程序的开发和调试。 - **配置Eclipse Plugin**: 设置Eclipse IDE中的Hadoop插件,以连接到Hadoop集群。 **3.2 Eclipse Plugin配置** - **配置...
### 使用命令行编译打包运行自己...以上就是使用命令行编译打包运行自己的MapReduce程序的过程详解,包括了Hadoop 2.6.0版本的变化、编译打包流程、运行命令解析以及使用Eclipse进行开发的方法。希望对初学者有所帮助。
4. 集群测试:MapReduce程序开发完成后,需要在集群上进行测试。这个阶段使用真实的大型数据集,并且通常涉及Hadoop集群的配置和管理。 5. 性能优化:在集群测试阶段,可能会发现性能瓶颈,此时需要对MapReduce程序...
6. **应用程序开发**: 不局限于Java,Hadoop提供了多种编程语言的支持。如Hadoop Streaming允许使用任意可执行程序(如Shell脚本)作为mapper和reducer,而Hadoop Pipes则是一个C++ API,可用于创建MapReduce应用...
WordCount程序是Hadoop MapReduce的入门示例,它由两个阶段组成:Map阶段和Reduce阶段。在Map阶段,输入的文本文件被分割成多个块,然后在不同的节点上并行处理。每个节点上的Mapper将读取数据,分割出单词(通常是...
在Hadoop生态系统中,MapReduce是一种分布式计算框架,它允许用户编写并运行处理大量数据的程序。这个"mapred.zip"文件显然包含了与Hadoop MapReduce相关的测试样例、文档和源码,这对于理解MapReduce的工作原理以及...
#### 二、Hadoop MapReduce 架构与工作流程 **1. 架构组成** - **JobTracker (Master)**:负责接收来自客户端的作业提交请求,将作业分解为多个任务,并分配给TaskTracker执行。 - **TaskTracker (Slave)**:运行...
**MapReduce**是Google提出的一种编程模型,用于大规模数据集(多TB甚至PB)的并行运算,设计目标是为非专业程序员提供一种简单的并行程序开发方式。Hadoop则是Apache基金会开发的一个开源框架,其核心组件包括HDFS...
在Windows环境下,使用Eclipse开发MapReduce程序时,必须确保所有必要的Hadoop库都被正确引入。这是因为MapReduce是Hadoop生态系统中的核心组件,用于处理分布式计算任务。以下是一些关于如何在Eclipse中配置和使用...
(1)熟悉Hadoop开发包 (2)编写MepReduce程序 (3)调试和运行MepReduce程序 (4)完成上课老师演示的内容 二、实验环境 Windows 10 VMware Workstation Pro虚拟机 Hadoop环境 Jdk1.8 二、实验内容 1.单词计数实验...
开发Hadoop MapReduce程序通常需要使用Java,而Eclipse是一款流行的Java集成开发环境(IDE)。在Eclipse中,你可以创建一个Java项目,然后添加Hadoop相关的依赖库,如hadoop-core或hadoop-client。接下来,编写Map和...
为了运行这些MapReduce程序,开发者需要设置Hadoop环境,包括安装Hadoop,配置集群参数,以及正确设置Hadoop的环境变量。此外,代码中可能还会涉及到Hadoop的相关API,如`InputFormat`、`OutputFormat`和`...
在Hadoop生态系统中,Eclipse是一个常用的集成开发环境(IDE),用于编写MapReduce程序。MapReduce是一种编程模型,由Google提出,主要用于大规模数据集的并行处理。它将复杂的分布式计算任务分解为两个主要阶段:...