hadoop第一个例子WordCount

转载 2013年12月05日 17:00:52

hadoop查看自己空间 http://127.0.0.1:50070/dfshealth.jsp

 

 

 


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 {


  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();
    String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
    if (otherArgs.length != 2) {
      System.err.println("Usage: wordcount <in> <out>");
      System.exit(2);
    }
    Job job = new Job(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(otherArgs[0]));
    FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
    System.exit(job.waitForCompletion(true) ? 0 : 1);
  }

}




3.配置Map/Reduce Locations
在Window-->Show View中打开Map/Reduce Locations,在Map/Reduce Locations中新建一个Hadoop Location。在这个View中,右键-->New Hadoop Location。在弹出的对话框中你需要配置Location name,如Hadoop,还有Map/Reduce Master和DFS Master。这里面的Host、Port分别为你在mapred-site.xml、core-site.xml中配置的地址及端口。如:

Linux下使用Eclipse开发Hadoop应用程序

4.新建项目。
File-->New-->Other-->Map/Reduce Project,项目名可以随便取,如WordCount。
复制 hadoop安装目录/src/example/org/apache/hadoop/examples/WordCount.java到刚才新建的项目WordCount下,删除WordCount.java首行package

Linux下使用Eclipse开发Hadoop应用程序

5.在本地新建word.txt,内容为:
java c++ python cjava c++ javascript helloworld hadoopmapreduce java hadoop hbase

6.通过hadoop的命令在HDFS上创建/tmp/workcount目录,命令如下:
bin/hadoop fs -mkdir /tmp/wordcount
通过copyFromLocal命令把本地的word.txt复制到HDFS上,命令如下:
bin/hadoop fs -copyFromLocal /home/wangxing/Development/eclipseWorkspace/word.txt/tmp/wordcount/word.txt

7.运行项目
(1).在新建的项目Hadoop,点击WordCount.java,右键-->Run As-->Run Configurations
(2).在弹出的Run Configurations对话框中,点Java Application,右键-->New,这时会新建一个application名为WordCount
(3).配置运行参数,点Arguments,在Program arguments中输入你要传给程序的输入文件夹和你要求程序将计算结果保存的文件夹,如:
hdfs://localhost:9000/tmp/wordcount/word.txt hdfs://localhost:9000/tmp/wordcount/out
(4)点击Run,运行程序
过段时间将运行完成,等运行结束后,查看例子的输出结果,使用命令:
bin/hadoop fs -ls /tmp/wordcount/out
发现有两个文件夹和一个文件,使用命令查看part-r-00000里的运行结果:
bin/hadoop fs -cat /tmp/wordcount/out/part-r-00000
Linux下使用Eclipse开发Hadoop应用程序



Hadoop第一个测试实例WordCount的运行

首先确保hadoop已经正确安装、配置以及运行。 拷贝WordCount.java到我们的文件夹,下载的hadoop里带有WordCount.java,路径为: hadoop-0.20.203.0...
  • snrqtdhuqf
  • snrqtdhuqf
  • 2011年11月24日 08:25
  • 20103

Hadoop安装配置、运行第一个WordCount示例程序

操作系统ubuntu。本篇目的是在单机模式下运行成功WordCount示例程序。 本篇小结安装步骤,遇到的问题和解决办法。 疑惑点及其思考。 Hadoop是为linux而开发的,...
  • qq_23617681
  • qq_23617681
  • 2016年04月17日 11:21
  • 534

hadoop自带示例wordcount

1.首先确认你的hadoop启动了。 master与slave启动方式相同,进入hadoop目录下的sbin目录,命令:$cd /home/hadoop/hadoop/sbin (根据个人安装的had...
  • xiakexiaohu
  • xiakexiaohu
  • 2017年01月17日 22:18
  • 672

Hadoop的测试例子WordCount(含效果图)

Hadoop的测试例子WordCount(含效果图)
  • u012965373
  • u012965373
  • 2016年01月07日 23:45
  • 2008

Hadoop大数据平台入门——第一个小程序WordCount

首先我们需要安装Hadoop,并对Hadoop进行配置。这里我们就不赘述了,详情看这篇博客:Hadoop安装配置 值得注意的是,配置的时候,需要给Hadoop权限才能正确执行。最简单的办法就是讲ha...
  • a60782885
  • a60782885
  • 2017年05月07日 10:42
  • 4010

分析Hadoop自带WordCount例子的执行过程

在Hadoop的发行包中也附带了例子的源代码,WordCount.java类的主函数实现如下所示:Java代码  public static void main(String[] args) thro...
  • hitmediaman
  • hitmediaman
  • 2011年06月07日 15:50
  • 1894

学习Hadoop第十一课(MapReduce的实例---WordCount)

上节课我们一起学习了MapReduce大的框架及原理,单看理论的话很容易懵圈,这节我们便一起学习一个MapReduce的简单例子,通过例子来理解原理从来都是最好的学习方法。        首先我们来简...
  • u012453843
  • u012453843
  • 2016年09月17日 12:13
  • 1559

Ubuntu16.04 上运行 Hadoop2.7.3 自带example wordCount摸索记录

首先最最重要的写在最前面,也是我觉得个人踩得最深的坑,刚接触hadoop的人,缺少的认识: hdfs的理解:它是一个文件系统,跟linux的文件系统是类似的结构,拥有类似的语法,大概就是你在linux...
  • subiyet
  • subiyet
  • 2016年09月02日 15:57
  • 5443

hadoop自带例子wordcount的具体运行步骤

1.在linux系统中,所在目录“/home/kcm”下创建一个文件夹input [ubuntu@701~]$ mkdir input 2.在文件夹input中创建两个文本文件file1.txt和fi...
  • xiaokang06
  • xiaokang06
  • 2014年03月17日 21:14
  • 10753

hadoop-2.7.2运行WordCount

初学hadoop的时候往往会被1.x和2.x搞晕,其实二者还是有些不同的。这里演示一下hadoop2.7.2版本的wordcount例子测试及运行流程。 我的hadoop安装在/usr/local/...
  • shuke1991
  • shuke1991
  • 2016年06月26日 00:49
  • 1628
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hadoop第一个例子WordCount
举报原因:
原因补充:

(最多只允许输入30个字)