`
zhaolei415
  • 浏览: 168833 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hadoop的hello world

阅读更多
能进行hello world之前假设你的环境已经搭建完毕(我搭建的伪分布式)
我用hadoop源码中的WordCount作为hadoop的hello world。
(1)我们拿到hadoop源码中的WordCount类代码如下
package org.apache.hadoop.examples;

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);
  }
}


(2)我们把这个文件放到hadoop的工作目录下,并在工作目录下面新建文件夹WordCount
(3)
javac -classpath hadoop-core-0.20.203.0.jar:lib/commons-cli-1.2.jar -d WordCount WordCount.java

(4)进入到WordCount文件夹中执行
   
 jar -cvf wordcount.jar org/*

然后把生成的jar拷贝到hadoop工作目录下面
(5)然后在hadoop工作目录下面新建一个input目录 mkdir input,在目录里面新建一个文件vi file1,输入以下内容:
hello world
hello hadoop
hello mapreduce
,把该文件上传到hadoop的分布式文件系统中去
./bin/hadoop fs -put input/file* input

(6)然后我们开始执行
./bin/hadoop jar wordcount.jar org.apache.hadoop.examples.WordCount input wordcount_output

(7)最后我们查看运行结果
./bin/hadoop fs -cat wordcount_output/part-r-00000


hadoop  1
hello   3
mapreduce       1
world   1
分享到:
评论
1 楼 Menuz 2013-04-16  
比WordCount例子更具体,Good~~

相关推荐

    hadoop_hello_world

    【压缩包子文件的文件名称列表】"hadoop_helloworld" 可能包含以下内容: 1. `WordCount.java`:这是实现单词计数的Java源代码,包含了Mapper和Reducer类。 2. `input.txt`:作为示例的输入文本文件,里面包含一些...

    hadoop-hello-world:Hadoop简介与Mac安装和map-reduce示例

    Hadoop Mac安装和Map Reduce示例 先决条件 确认适用于HadoopJava 1.6。*或更高版本 $ java -version java version " 1.7.0_79 " Java(TM) SE Runtime Environment (build 1.7.0_79-b15) Java HotSpot(TM) 64-Bit ...

    hadoop mapreduce helloworld 能调试

    "Hadoop MapReduce HelloWorld 能调试" 的主题意味着我们将深入理解如何设置、运行以及调试 MapReduce 任务,特别是针对入门级的 "wordcount" 示例。 MapReduce 分为两个主要阶段:Map 阶段和 Reduce 阶段。Map ...

    MapReduce版的HelloWorld

    要运行这个"HelloWorld-WordCount"程序,首先确保你的Eclipse已经安装了Hadoop相关的Maven插件,接着导入这个项目。在项目中,你会看到源代码文件,包括`WordCount.java`,这是实现MapReduce任务的主要类。这个类会...

    Hadoop-Programs:Hadoop 程序

    这个程序是基本的字数统计,Hadoophello world Hadoop 多行读取: 该程序读取传递两行作为记录而不是默认的一行 Hadoop 将数组传递给减速器: 该程序将一个数组从映射器传递给化简器,为了传递数组,需要扩展 ...

    Hadoop “Hello World” 示例-附件资源

    Hadoop “Hello World” 示例-附件资源

    Big Data Retriever

    #### 二、Hadoop Hello World ##### 2.1 Hadoop简介 Hadoop是一个开源软件框架,用于分布式存储和处理大规模数据集。它基于Google的MapReduce论文构建,可以高效地处理PB级别的数据。 - **HDFS (Hadoop Distributed ...

    Hadoop in action中文版.pdf

    性的博客和演示文稿,它们会教你如何做一个“Hello World”的示例。当足够熟悉之后,你就会 知道如何在邮件列表中提问,在大小会议中邂逅专家,甚至自己阅读源代码。但在这中间存在一 个巨大的知识落差,你的胃口更...

    使用hadoop实现WordCount实验报告.docx

    例如,输入文件包含"Hello world",则WordCount程序的输出应为"Hello 1"和"world 1"。 ### 二、实验原理与步骤 1. **配置Hadoop环境** - **Java安装与环境变量配置**:确保系统已安装Java 1.8,并配置好JAVA_HOME...

    Hello_world:Hello World项目样本

    3. **编译代码**:打开命令行终端,导航到`HelloWorld.java`所在的目录,然后运行`javac HelloWorld.java`命令。这将生成一个名为`HelloWorld.class`的字节码文件。 4. **运行程序**:接着,输入`java HelloWorld`...

    wing324#helloworld_zh#Hadoop上伟大的脚本们都干了啥1

    通过hdfs getconf -confKey dfs.ha.automatic-failover.enabled获取zkfc的机器列表,并在这些机器上关闭zk

    Hadoop3.2.2.zip

    Hadoop 3.2.2 是一个重要的大数据处理框架,主要设计用于分布式存储和处理海量数据。这个版本的Hadoop引入了诸多改进和优化,旨在提高性能、稳定性和易用性。在Linux环境下,Hadoop通常被用作大数据处理的核心组件,...

    linux搭建hadoop环境

    echo "Hello World Bye World" &gt; file01 echo "Hello Hadoop Goodbye Hadoop" &gt; file02 ``` 2. **上传文件至HDFS**: - 在HDFS中创建一个名为`input`的目录: ```bash hadoop fs -mkdir input ``` - 将本地...

    hadoop实现计数器

    例如,如果输入是"hello world hello",那么Mapper会输出("hello", 1)、("world", 1)这样的键值对。 接下来是Reduce阶段,这个阶段的任务是对Map阶段产生的所有相同键的值进行聚合。在我们的计数器场景中,Reducer...

    Windows 7 or 10 eclipse hadoop2.7.1 配置需要文件和工具

    - 在Eclipse中创建一个新的MapReduce项目,编写一个简单的Hello World程序。 - 使用Eclipse的`Run As` -&gt; `Map/Reduce Job`运行该程序,如果一切配置正确,你应该能在Hadoop的控制台输出看到你的程序结果。 通过...

    Hadoop2.6.4.zip

    Hadoop是Apache软件基金会开发的一个开源分布式计算框架,它的核心设计目标是处理和存储大规模数据。Hadoop2.6.4是Hadoop发展中的一个重要版本,它提供了许多增强的功能和性能优化,使得在Linux环境下部署和运行大...

    jsp与hadoop实验

    本次实验的目的是让大家熟悉搭建智能手机开发平台的过程,了解Andorid开发项目的基本文件目录结构,并实现HelloWorld小例程。 实验要求 1. 完成Android开发平台的搭建及相关配置 2. 创建项目并熟悉文件目录结构 3. ...

Global site tag (gtag.js) - Google Analytics