Hadoop版Helloworld之wordcount运行示例

1.编写一个统计单词数量的java程序,并命名为wordcount.java,代码如下:

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;

public class WordCount {

  public static class TokenizerMapper
       extends Mapper<Object, Text, Text, IntWritable>{

    private final static IntWritable one = new IntWritable(1);
    private Text word = new Text();

    public void map(Object key, Text value, Context context
                    ) throws IOException, InterruptedException {
      StringTokenizer itr = new StringTokenizer(value.toString());
      while (itr.hasMoreTokens()) {
        word.set(itr.nextToken());
        context.write(word, one);
      }
    }
  }

  public static class IntSumReducer
       extends Reducer<Text,IntWritable,Text,IntWritable> {
    private IntWritable result = new IntWritable();

    public void reduce(Text key, Iterable<IntWritable> values,
                       Context context
                       ) throws IOException, InterruptedException {
      int sum = 0;
      for (IntWritable val : values) {
        sum += val.get();
      }
      result.set(sum);
      context.write(key, result);
    }
  }

  public static void main(String[] args) throws Exception {
    Configuration conf = new Configuration();
    Job job = Job.getInstance(conf, "word count");
    job.setJarByClass(WordCount.class);
    job.setMapperClass(TokenizerMapper.class);
    job.setCombinerClass(IntSumReducer.class);
    job.setReducerClass(IntSumReducer.class);
    job.setOutputKeyClass(Text.class);
    job.setOutputValueClass(IntWritable.class);
    FileInputFormat.addInputPath(job, new Path(args[0]));
    FileOutputFormat.setOutputPath(job, new Path(args[1]));
    System.exit(job.waitForCompletion(true) ? 0 : 1);
  }
}

2.声明java环境变量:

export JAVA_HOME=/usr/java/default
export PATH=${JAVA_HOME}/bin:${PATH}
export HADOOP_CLASSPATH=${JAVA_HOME}/lib/tools.jar

注意:如果不声明以上环境变量,那么在以后运行时,将会收到错误提示:

3.编译并创建jar包。

bin/hadoop com.sun.tools.javac.Main WordCount.java
jar cf wc.jar WordCount*.class

4.运行第三步骤生成的wc.jar包。此时要注意,output文件夹不要手工创建,系统运行后会自动创建。

bin/hadoop jar wc.jar WordCount /user/root/wordcount/input /user/root/wordcount/output

正常运行结束后,会在outPut文件夹下生成part-r-00000及__SUCCESS两个文件,其中part-r-00000存储分析结果。运行命令:

bin/hadoop fs -cat /user/joe/wordcount/output/part-r-00000

即可查看分析结果,如下图所示:

至此,本示例完成。

时间: 2024-10-15 20:27:20

Hadoop版Helloworld之wordcount运行示例的相关文章

[0012] Hadoop 版hello word mapreduce wordcount 运行(二)

目的: 学习Hadoop mapreduce 开发环境eclipse windows下的搭建 环境: Winows 7 64 eclipse,直接运行mapreduce 到服务器,结果输出到eclipse Hadoop2.6.4环境 准备: Hadoop2.6.4的源码包 相关: [0004] Hadoop 版hello word mapreduce wordcount 运行 [0011] windows 下 eclipse 开发 hdfs程序样例 (三) [0008] Windows 7 下

Hadoop下面WordCount运行详解

单词计数是最简单也是最能体现MapReduce思想的程序之一,可以称为MapReduce版"Hello World",该程序的完整代码可以在Hadoop安装包的"src/examples"目录下找到.单词计数主要完成功能是:统计一系列文本文件中每个单词出现的次数,如下图所示. 现在我们以"hadoop"用户登录"Master.Hadoop"服务器. 1. 创建本地的示例数据文件: 依次进入[Home]-[hadoop]-[ha

运行Hadoop自带的wordcount单词统计程序

0.前言 前面一篇<Hadoop初体验:快速搭建Hadoop伪分布式环境>搭建了一个Hadoop的环境,现在就使用Hadoop自带的wordcount程序来做单词统计的案例. 1.使用示例程序实现单词统计 (1)wordcount程序 wordcount程序在hadoop的share目录下,如下: [[email protected] mapreduce]# pwd /usr/local/hadoop/share/hadoop/mapreduce [[email protected] mapr

hadoop wordCount运行

本文以康哥的博客为基础进行修改和补充,详见:http://kangfoo.github.io/article/2014/01/hadoop1.x-wordcount-fen-xi/ hadoop mapreduce 过程粗略的分为两个阶段: 1.map; 2.redurce(copy, sort, reduce) 具体的工作机制还是挺复杂的,这里主要通过hadoop example jar中提供的wordcount来对hadoop mapredurce做个简单的理解. Wordcount程序输入

[hadoop]命令行编译并运行hadoop例子WordCount

首先保证JDK.Hadoop安装设置成功 可以参考[linux]ubuntu下安装hadoop [linux]ubutnu12.04 下安装jdk1.7 使用hadoop版本为1.2.1,jdk为1.7 在hadoop-1.2.1\src\examples\org\apache\hadoop\examples找到WordCount.java 源码如下: 1 /** 2 * Licensed under the Apache License, Version 2.0 (the "License&q

Hadoop MapReduce 官方教程 -- WordCount示例

Hadoop MapReduce 官方教程 -- WordCount示例: http://hadoop.apache.org/docs/r1.0.4/cn/mapred_tutorial.html#%E4%BE%8B%E5%AD%90%EF%BC%9AWordCount+v1.0

一步一步跟我学习hadoop(2)----hadoop eclipse插件安装和运行wordcount程序

本博客hadoop版本是hadoop  0.20.2. 安装hadoop-0.20.2-eclipse-plugin.jar 下载hadoop-0.20.2-eclipse-plugin.jar文件,并添加到eclipse插件库,添加方法很简单:找到eclipse安装目录下的plugins目录,直接复制到此目录下,重启eclipse 依次点击eclipse工具栏的window-----show view ------other在弹出的窗口中输入map,确认找到如下所示 到这里插件安装成功 map

Hadoop之MapReduce WordCount运行

搭建好Hadoop集群环境或者单机环境,并运行,MapReduce进程要起来 1. 假设已经配置了下列环境变量 export JAVA_HOME=/usr/java/default export PATH=$JAVA_HOME/bin:$PATH export HADOOP_CLASSPATH=$JAVA_HOME/lib/tools.jar 2.创建2个测试文件,并上传到Hadoop HDFS中 [[email protected]one temp]$ cat file01 Hello Wor

在eclipse上跑hadoop的helloworld

关于hadoop的用处什么我就不说了,在这里记录下在eclipse上第一次跑hadoop遇到的问题吧~ hadoop的安装我就不说啦,网上教程一大堆~我直接用的公司的Linux上的hadoop. eclipse用的是mars,JDK1.8,win7,hadoop是公司的Linux上的hadoop 1.2.1,关联的JDK是1.7. 首先下载hadoop关联eclipse的插件hadoop-eclipse-plugin-1.2.1.最好下载相同版本的,不然容易出问题(我就是典型).把插件放到ecl