package com.hadoop.sample;
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.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;
import org.apache.hadoop.util.GenericOptionsParser;
public class WordCount {
//继承mapper接口,设置map的输入类型为<Object,Text>
//输出类型为<Text,IntWritable>
public static class Map extends Mapper<Object,Text,Text,IntWritable>{
//one表示单词出现一次
private static IntWritable one = new IntWritable(1);
//word存储切下的单词
private Text word = new Text();
public void map(Object key,Text value,Context context) throws IOException,InterruptedException{
//对输入的行切词
StringTokenizer st = new StringTokenizer(value.toString());
while(st.hasMoreTokens()){
word.set(st.nextToken());//切下的单词存入word
context.write(word, one);
}
}
}
//继承reducer接口,设置reduce的输入类型<Text,IntWritable>
//输出类型为<Text,IntWritable>
public static class Reduce extends Reducer<Text,IntWritable,Text,IntWritable>{
//result记录单词的频数
private static IntWritable result = new IntWritable();
public void reduce(Text key,Iterable<IntWritable> values,Context context) throws IOException,InterruptedException{
int sum = 0;
//对获取的<key,value-list>计算value的和
for(IntWritable val:values){
sum += val.get();
}
//将频数设置到result
result.set(sum);
//收集结果
context.write(key, result);
}
}
/**
* @param args
*/
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
Configuration conf = new Configuration();
//检查运行命令
String[] otherArgs = new GenericOptionsParser(conf,args).getRemainingArgs();
if(otherArgs.length != 2){
System.err.println("Usage WordCount <int> <out>");
System.exit(2);
}
//配置作业名
Job job = new Job(conf,"word count");
//配置作业各个类
job.setJarByClass(WordCount.class);
job.setMapperClass(Map.class);
job.setCombinerClass(Reduce.class);
job.setReducerClass(Reduce.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
分享到:
相关推荐
hadoop中的demo,wordcount列子用到的JAR包 用法: # 在容器里运行WordCount程序,该程序需要2个参数...hadoop jar hadoop-mapreduce-examples-2.7.1-sources.jar org.apache.hadoop.examples.WordCount input output
MapReduce是Hadoop生态系统中的核心组件之一,主要用于处理和生成大规模数据集。它的设计目标是简化分布式计算,使得开发者能够专注于编写业务逻辑,而无需过多关注底层分布式系统的复杂性。 **1. MapReduce定义** ...
用java的MapReduce写了个demo,用于计算文档单词出现个数
为了测试Hadoop集群,你可以尝试运行一些示例程序,如WordCount,这是一个经典的MapReduce程序,用于统计文本文件中的单词出现次数。 总之,Hadoop 3.2.4提供了一个强大且可靠的分布式计算平台,适用于大数据分析、...
【标题】Hadoop MapReduce 实现 WordCount MapReduce 是 Apache Hadoop 的核心组件之一,它为大数据处理提供了一个分布式计算框架。WordCount 是 MapReduce 框架中经典的入门示例,它统计文本文件中每个单词出现的...
在下载hadoop-2.7.3.tar.gz这个压缩包后,用户可以解压得到Hadoop的源代码、配置文件、可执行二进制文件等。解压命令通常是在终端输入`tar -zxvf hadoop-2.7.3.tar.gz`。解压后,用户需要根据自己的系统环境进行适当...
8. **运行示例程序**:你可以尝试运行Hadoop自带的示例程序,如WordCount,来测试你的安装是否成功。 在Windows环境中,由于缺少原生支持,你可能需要使用像cygwin这样的模拟Unix环境,或者使用像Scoop这样的包管理...
4. **hadoop-examples-1.2.1.jar**:此JAR包提供了几个示例程序,演示了如何使用Hadoop MapReduce进行简单的数据处理任务,如WordCount、PiEstimator等,这些示例对于初学者理解Hadoop的工作原理非常有帮助。...
为了验证Hadoop安装成功,可以运行一些简单的测试,如`hadoop fs -ls /`检查HDFS根目录,或者使用WordCount示例程序处理数据。Hadoop还提供了丰富的工具,如HBase(分布式数据库)、Hive(数据仓库工具)和Pig(数据...
(3)写wordcount代码并把代码生成jar包 (4)运行命令 (1):把linus下的文件放到hdfs上 (2):运行MapReduce (5):查看运行结果 (6)网页上查看MapReduce任务 2.矩阵相乘实验(matrix) (1)写matrix代码并把...
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar wordcount /input /output ``` 3. **查看结果**: 使用`hadoop fs -cat`命令查看输出结果,如`hadoop fs -cat /output/*`。 以上就是...
### Hadoop-1.2.1 运行WordCount实例详解 #### 一、环境准备与搭建 在开始运行WordCount实例之前,首先确保已经按照之前的步骤完成了Hadoop-1.2.1环境的搭建。这包括但不限于安装JDK、配置Hadoop环境变量以及设置...
接着,启动Hadoop服务,进行格式化NameNode,最后测试Hadoop集群是否正常运行,如通过运行WordCount示例来验证。 与Hadoop相关的标签“kafka”提到了另一个大数据处理组件——Apache Kafka。Kafka是一个分布式流...
用户只需简单地解压这个文件到本地磁盘,即可解决本地运行MapReduce程序时无法连接到Hadoop客户端的问题。这通常涉及到Hadoop客户端的配置、依赖库的兼容性以及Java运行环境的设置。 Hadoop是Apache软件基金会的一...
hadoop fs -put examples/src/main/java/org/apache/hadoop/examples/WordCount /wordcount ``` 3. 编译并运行WordCount: ```bash hadoop jar build/hadoop-examples-2.7.7.jar wordcount /wordcount /output ``` 4...
- 运行简单的MapReduce程序,如WordCount,验证集群功能。 5. 标签“大数据”提示了Hadoop在大数据处理中的应用。大数据处理包括数据采集、预处理、存储、分析和可视化等步骤。Hadoop通过其分布式特性,可以高效地...
7. **测试运行**:通过`hadoop fs -ls`命令检查HDFS是否正常工作,使用WordCount示例验证MapReduce功能。 四、Hadoop的使用场景与最佳实践 Hadoop广泛应用于数据分析、日志处理、推荐系统、机器学习等领域。在使用...
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.1.jar wordcount /input /output ``` 总结,Hadoop 2.9.1在Linux环境的安装和使用涉及多个步骤,包括环境准备、安装、配置、启动...
### Hadoop集群配置及MapReduce开发手册知识点梳理 #### 一、Hadoop集群配置说明 ##### 1.1 环境说明 本手册适用于基于CentOS 5系统的Hadoop集群配置,具体环境配置如下: - **操作系统**:CentOS 5 - **JDK版本...
6. **测试程序**:编写一个简单的Hadoop MapReduce程序,例如WordCount示例,来测试你的环境是否配置正确。MapReduce程序通常包括Mapper类、Reducer类以及主类,主类负责提交作业到集群。 7. **运行与调试**:在...