运行Hadoop示例程序WordCount

WordCount程序的目标是统计几个文件中每个单词出现的次数,是官方提供的示例程序,这里使用的hadoop的版本为hadoop-1.2.1。

1)、首先编写代码,将WordCount.java文件放到wordcount_classes文件夹中,代码如下:

import java.io.IOException;
import java.util.*;

import org.apache.hadoop.fs.Path;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapred.*;
import org.apache.hadoop.util.*;

public class WordCount {

        public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> {
                private final static IntWritable one = new IntWritable(1);
                private Text word = new Text();

                public void map(LongWritable key, Text value,OutputCollector<Text, IntWritable> output, Reporter reporter)
                                throws IOException {
                        String line = value.toString();
                        StringTokenizer tokenizer = new StringTokenizer(line);
                        while (tokenizer.hasMoreTokens()) {
                                word.set(tokenizer.nextToken());
                                output.collect(word, one);
                        }
                }
        }

        public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> {
                public void reduce(Text key, Iterator<IntWritable> values,
                                OutputCollector<Text, IntWritable> output, Reporter reporter)
                                throws IOException {
                        int sum = 0;
                        while (values.hasNext()) {
                                sum += values.next().get();
                        }
                        output.collect(key, new IntWritable(sum));
                }
        }

        public static void main(String[] args) throws Exception {
                JobConf conf = new JobConf(WordCount.class);
                conf.setJobName("wordcount");

                conf.setOutputKeyClass(Text.class);
                conf.setOutputValueClass(IntWritable.class);

                conf.setMapperClass(Map.class);
                conf.setCombinerClass(Reduce.class);
                conf.setReducerClass(Reduce.class);

                conf.setInputFormat(TextInputFormat.class);
                conf.setOutputFormat(TextOutputFormat.class);

                FileInputFormat.setInputPaths(conf, new Path(args[0]));
                FileOutputFormat.setOutputPath(conf, new Path(args[1]));

                JobClient.runJob(conf);
        }
}

2)、编译代码并打成jar包,打jar包的时候别忘了后面的点号”.”,表示打包到当前文件夹:

$ javac –classpath ~/hadoop-1.2.1/hadoop-core-1.2.1.jar-dwordcount_classes  ~/wordcount_classes/WordCount.java
$ jar –cvf wordcount.jar -C wordcount_classes/.

成功后,将生成wordcount.jar文件

3)、在HDFS中新建输入文件的文件夹input,建好后使用-ls命令查看

$ bin/hadoop dfs –mkdir input
$ bin/hadoop dfs –ls

4)、新建两个文本文件并上传至HDFS。在两个文件中分别输入一篇英文文章(随便找,或者输入几个单词即可),这里假设两个文件分别是file01和file02,使用以下命令将两个文件上传至HDFS中,file01 file02在input_files中:

$ bin/hadoop dfs -put ~/input_files/* input

5)、运行程序,查看结果,将结果输出到output中。

$ bin/hadoop jar~/wordcount_classes/wordcount.jar WordCount input output

结果如下(太长,只截取了一部分):

也可以使用下面的命令,将output文件下载下来查看

$ bin/hadoop dfs –get output output_local

output_local结构为:

示例程序结束,下面是HDFS常用的操作:

hadoop dfs -ls in 列出HDFS下某个文档中的文件

hadoop dfs -put test1.txt test 上传文件到指定目录并且重新命名,只有所有的DataNode都接收完数据才算成功

hadoop dfs -get in getin 从HDFS获取文件并且重新命名为getin,同put一样可操作文件也可操作目录

hadoop dfs -rmr out 删除指定文件从HDFS上

hadoop dfs -cat in/* 查看HDFS上in目录的内容

hadoop dfsadmin -report 查看HDFS的基本统计信息,结果如下

hadoop dfsadmin -safemode leave 退出安全模式

hadoop dfsadmin -safemode enter 进入安全模式

时间: 2024-10-27 19:37:33

运行Hadoop示例程序WordCount的相关文章

Hadoop示例程序wordcount分析

wordcount作为Hadoop的示例程序,其思想很简洁,但也值得去理解 尤其是作为Hadoop菜鸟的我 wordcount程序如下: package com.lcy.hadoop.examples; import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import

(转载)Hadoop示例程序WordCount详解

最近在学习云计算,研究Haddop框架,费了一整天时间将Hadoop在Linux下完全运行起来,看到官方的map-reduce的demo程序WordCount,仔细研究了一下,算做入门了. 其实WordCount并不难,只是一下子接触到了很多的API,有一些陌生,还有就是很传统的开发相比,map-reduce确实是一种新的编程理念,为了让各位新手少走弯路,我将WordCount中的很多API都做了注释,其实这些方法搞明白了以后程序就很简单了,无非就是将一句话分词,先用map处理再用reduce处

Hadoop示例程序WordCount详解及实例(转)

1.图解MapReduce 2.简历过程: Input: Hello World Bye World Hello Hadoop Bye Hadoop Bye Hadoop Hello Hadoop Map: <Hello,1> <World,1> <Bye,1> <World,1> <Hello,1> <Hadoop,1> <Bye,1> <Hadoop,1> <Bye,1> <Hadoop,

ROS indigo安装完成后运行小乌龟示例程序

安装ROS成功后,在Beginner Tutorials中有一个简单的示例程序. 在Terminal中运行以下命令:$ roscore新开一个terminal,运行以下命令,打开小乌龟窗口:$ rosrun turtlesim turtlesim_node新开一个terminal,运行以下命令,打开乌龟控制窗口,可使用方向键控制乌龟运动:$ rosrun turtlesim turtle_teleop_key选中控制窗口,按方向键,可看到小乌龟窗口中乌龟在运动.新开一个terminal,运行以下

运行hadoop的Wordcount程序报错java.lang.ClassNotFoundException: WordCount$TokenizerMapper

在运行hadoop的官方Wordcount程序时报错 java.lang.ClassNotFoundException: WordCount$TokenizerMapper 提示信息为找不到TokenizerMapper类,但程序师官方的,应该没错. 打包到Linux上可以运行,确定不是程序的错. 然后在网上搜索一番,看到有人说可能是eclipse版本原因,试了一下就ok了 使用的eclipse版本是3.5.1. 遇到此问题的兄弟们可以试一下

win7+Myeclipse10开发Hadoop应用程序环境搭建

1.复制linux下已配置安装好的hadoop目录进入windows, 同时修改hadoo-env.sh文件的JAVA_HOME为windows下的jdk目录. 2.复制hadoop-eclipse-1.2.jar插件进入myeclipse文件夹下dropins下 下载:我的文件下有一个以hadoop-eclipse1.2.rar文件(压缩包),下载下来,将后缀改为jar就可以了 3.重启myeclipse 4.配置:windows-Preference->windows下的hadoop目录 5

运行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例子——运行example中的wordCount例子

Hadoop例子——运行example中的wordCount例子 一.   需求说明 单词计数是最简单也是最能体现MapReduce思想的程序之一,可以称为 MapReduce版"Hello World",该程序的完整代码可以在Hadoop安装包的"src/examples"目录下找到.单词计数主要完成功能是:统计一系列文本文件中每个 单词出现的次数,如下图所示. 二.   环境 VMware® Workstation 10.04 Ubuntu14.04 32位 J

使用ToolRunner运行Hadoop程序基本原理分析

为了简化命令行方式运行作业,Hadoop自带了一些辅助类.GenericOptionsParser是一个类,用来解释常用的Hadoop命令行选项,并根据需要,为Configuration对象设置相应的取值.通常不直接使用GenericOptionsParser,更方便的方式是:实现Tool接口,通过ToolRunner来运行应用程序,ToolRunner内部调用GenericOptionsParser. 一.相关的类及接口解释 (一)相关类及其对应关系如下: 关于ToolRunner典型的实现方