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应用程序



MapReduce第一个例子WordCount

MapReduce第一个例子WordCount步骤描述: 1. 分析现有逻辑,确定输入和输出的格式(类型) 2. 自定义一个类,这个类集成org.apache.hadoop.mapreduce.M...

ubuntu下运行第一个小例子——wordcount

http://blog.sina.com.cn/s/blog_4b6a1bd60101mb5n.html

Spark学习笔记@第一个例子wordcount+Eclipse

使用Eclipse编辑wordcount程序,打包并运行。详细记录了打包发布过程中的问题。...
  • hqwang4
  • hqwang4
  • 2017年05月21日 22:17
  • 779

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

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

hadoop的第一个程序wordcount实现

具体安装步骤请见博客:linux hadoop 2.7 伪分布式安装简单几步实现 1. 在本地新建一个文件,笔者在~/hadoop-2.7.1/local_data文件夹新建了一个文本文件hel...

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

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

hadoop 第一个程序wordcount执行过程

第一次在hadoop上执行wordcount程序,原来是照着书上一步步来的,发现书上记录的都不是特别明确,仅有主要的命令,对于我这个小白来说,一敲命令就出来错简直太打击学习积极性了。于是把详细过程记录...

hadoop的第一个程序WordCount

伪代码分析: 执行步骤:  1. map任务处理 1.1读取输入文件内容,解析成key、value对。对输入文件的每一行,解析成key、value对。每一个键值对调用一次map函数。 ...

Hadoop第一个wordcount程序

我们来运行hadoop-example.jar 里面自带的WordCount 程序,作用是统计单词的个数。 1)在Ubuntu1 的Hadoop 的home 目录下创建一个test.txt 文件,内...

Hadoop的第一个程序 wordcount

Hadoop的第一个程序 wordcount package com.songguoliang.hadoop.chapter05; import java.io.IOExceptio...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hadoop第一个例子WordCount
举报原因:
原因补充:

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