`

hadoop安装与WordCount例子

阅读更多
1、JDK安装
下载网址:
http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u29-download-513648.html
如果本地有安装包,则用SecureCRT连接Linux机器,然后用rz指令进行上传文件;

下载后获得jdk-6u29-linux-i586-rpm.bin文件,使用sh jdk-6u29-linux-i586-rpm.bin进行安装,
等待安装完成即可;java默认会安装在/usr/java下;

在命令行输入:vi /etc/profile在里面添加如下内容export JAVA_HOME=/usr/java/jdk1.6.0_29export JAVA_BIN=/usr/java/jdk1.6.0_29/binexport PATH=$PATH:$JAVA_HOME/binexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport JAVA_HOME JAVA_BIN PATH CLASSPATH

进入 /usr/bin/目录cd /usr/binln -s -f /usr/java/jdk1.6.0_29/jre/bin/javaln -s -f /usr/java/jdk1.6.0_29/bin/javac
在命令行输入java -version屏幕输出:java version "jdk1.6.0_02"Java(TM) 2 Runtime Environment, Standard Edition (build jdk1.6.0_02)Java HotSpot(TM) Client VM (build jdk1.6.0_02, mixed mode)则表示安装JDK1.6完毕.

2、Hadoop安装
下载网址:http://www.apache.org/dyn/closer.cgi/hadoop/common/
如果本地有安装包,则用SecureCRT连接Linux机器,然后用rz指令进行上传文件;

下载后获得hadoop-0.21.0.tar.gz文件

解压 tar zxvf hadoop-0.21.0.tar.gz
压缩:tar zcvf hadoop-0.21.0.tar.gz 目录名


在命令行输入:vi /etc/profile在里面添加如下内容
export hadoop_home = /usr/george/dev/install/hadoop-0.21.0
export JAVA_HOME=/usr/java/jdk1.6.0_29export JAVA_BIN=/usr/java/jdk1.6.0_29/binexport PATH=$PATH:$JAVA_HOME/bin:$hadoop_home/binexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport JAVA_HOME JAVA_BIN PATH CLASSPATH

需要注销用户或重启vm,就可以直接输入hadoop指令了;
WordCount例子代码
3.1 Java代码:
package demo;

import java.io.IOException;
import java.util.Iterator;
import java.util.StringTokenizer;

import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.FileInputFormat;
import org.apache.hadoop.mapred.FileOutputFormat;
import org.apache.hadoop.mapred.JobClient;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapred.MapReduceBase;
import org.apache.hadoop.mapred.Mapper;
import org.apache.hadoop.mapred.OutputCollector;
import org.apache.hadoop.mapred.Reducer;
import org.apache.hadoop.mapred.Reporter;
import org.apache.hadoop.mapred.TextInputFormat;
import org.apache.hadoop.mapred.TextOutputFormat;

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

3.2 编译:
javac -classpath /usr/george/dev/install/hadoop-0.21.0/hadoop-hdfs-0.21.0.jar:/usr/george/dev/install/hadoop-0.21.0/hadoop-mapred-0.21.0.jar:/usr/george/dev/install/hadoop-0.21.0/hadoop-common-0.21.0.jar WordCount.java -d /usr/george/dev/wkspace/hadoop/wordcount/classes
在windows中,多个classpath参数值用;分割;在linux中用:分割;

编译后,会在/usr/george/dev/wkspace/hadoop/wordcount/classes目录下生成三个class文件:
WordCount.class  WordCount$Map.class  WordCount$Reduce.class

3.3将class文件打成jar包
到/usr/george/dev/wkspace/hadoop/wordcount/classes目录,运行jar cvf WordCount.jar *.class就会生成:
WordCount.class  WordCount.jar  WordCount$Map.class  WordCount$Reduce.class


3.4 创建输入数据:
创建/usr/george/dev/wkspace/hadoop/wordcount/datas目录,在其下创建input1.txt和input2.txt文件:
Touch input1.txt
Vi input1.txt

文件内容如下:
i love chinaare you ok?

按照同样的方法创建input2.txt,内容如下:
hello, i love word
You are ok

创建成功后可以通过cat input1.txt 和 cat input2.txt查看内容;

3.5 创建hadoop输入与输出目录:
hadoop fs -mkdir wordcount/inputhadoop fs -mkdir wordcount/outputhadoop fs -put input1.txt wordcount/input/hadoop fs -put input2.txt wordcount/input/

Ps : 可以不创建out目录,要不运行WordCount程序时会报output文件已经存在,所以下面的命令行中使用了output1为输出目录;
3.6运行
到/usr/george/dev/wkspace/hadoop/wordcount/classes目录,运行
[root@localhost classes]# hadoop jar WordCount.jar WordCount wordcount/input wordcount/output1
11/12/02 05:53:59 INFO security.Groups: Group mapping impl=org.apache.hadoop.security.ShellBasedUnixGroupsMapping; cacheTimeout=300000
11/12/02 05:53:59 WARN conf.Configuration: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id
11/12/02 05:53:59 WARN mapreduce.JobSubmitter: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
11/12/02 05:53:59 INFO mapred.FileInputFormat: Total input paths to process : 2
11/12/02 05:54:00 WARN conf.Configuration: mapred.map.tasks is deprecated. Instead, use mapreduce.job.maps
11/12/02 05:54:00 INFO mapreduce.JobSubmitter: number of splits:2
11/12/02 05:54:00 INFO mapreduce.JobSubmitter: adding the following namenodes' delegation tokens:null
11/12/02 05:54:00 INFO mapreduce.Job: Running job: job_201112020429_0003
11/12/02 05:54:01 INFO mapreduce.Job:  map 0% reduce 0%
11/12/02 05:54:20 INFO mapreduce.Job:  map 50% reduce 0%
11/12/02 05:54:23 INFO mapreduce.Job:  map 100% reduce 0%
11/12/02 05:54:29 INFO mapreduce.Job:  map 100% reduce 100%
11/12/02 05:54:32 INFO mapreduce.Job: Job complete: job_201112020429_0003
11/12/02 05:54:32 INFO mapreduce.Job: Counters: 33
        FileInputFormatCounters
                BYTES_READ=54
        FileSystemCounters
                FILE_BYTES_READ=132
                FILE_BYTES_WRITTEN=334
                HDFS_BYTES_READ=274
                HDFS_BYTES_WRITTEN=65
        Shuffle Errors
                BAD_ID=0
                CONNECTION=0
                IO_ERROR=0
                WRONG_LENGTH=0
                WRONG_MAP=0
                WRONG_REDUCE=0
        Job Counters
                Data-local map tasks=2
                Total time spent by all maps waiting after reserving slots (ms)=0
                Total time spent by all reduces waiting after reserving slots (ms)=0
                SLOTS_MILLIS_MAPS=24824
                SLOTS_MILLIS_REDUCES=6870
                Launched map tasks=2
                Launched reduce tasks=1
        Map-Reduce Framework
                Combine input records=12
                Combine output records=12
                Failed Shuffles=0
                GC time elapsed (ms)=291
                Map input records=4
                Map output bytes=102
                Map output records=12
                Merged Map outputs=2
                Reduce input groups=10
                Reduce input records=12
                Reduce output records=10
                Reduce shuffle bytes=138
                Shuffled Maps =2
                Spilled Records=24
                SPLIT_RAW_BYTES=220

3.7 查看输出目录
[root@localhost classes]# hadoop fs -ls wordcount/output1
11/12/02 05:54:59 INFO security.Groups: Group mapping impl=org.apache.hadoop.security.ShellBasedUnixGroupsMapping; cacheTimeout=300000
11/12/02 05:55:00 WARN conf.Configuration: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id
Found 2 items
-rw-r--r--   1 root supergroup          0 2011-12-02 05:54 /user/root/wordcount/output1/_SUCCESS
-rw-r--r--   1 root supergroup         65 2011-12-02 05:54 /user/root/wordcount/output1/part-00000

[root@localhost classes]# hadoop fs -cat /user/root/wordcount/output1/part-00000
11/12/02 05:56:05 INFO security.Groups: Group mapping impl=org.apache.hadoop.security.ShellBasedUnixGroupsMapping; cacheTimeout=300000
11/12/02 05:56:05 WARN conf.Configuration: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id
You     1
are     2
china   1
hello,i 1
i       1
love    2
ok      1
ok?     1
word    1
you     1
分享到:
评论

相关推荐

    hadoop入门例子wordcount

    hadoop入门例子wordcount

    Hadoop集群-WordCount运行详解.pdf

    1.3.2旧的WordCount分析与1.3.3新的WordCount分析,从源码层面解读了旧版和新版的WordCount程序实现,展示了程序如何定义Map和Reduce函数以及它们的工作机制。 1.4WordCount处理过程描述了WordCount程序在MapReduce...

    hadoop学习之wordCount以及文件上传demo,经测试通过

    WordCount是Hadoop入门的经典例子,它的主要任务是对文本文件中每个单词出现的次数进行统计。在Hadoop中,这个过程分为两个阶段:Map阶段和Reduce阶段。Map阶段,Hadoop将输入文件分割成多个块,并在各个节点上并行...

    ubuntu运行hadoop的wordcount

    在Ubuntu系统上部署并运行Hadoop WordCount实例,首先需要确保已经安装了Hadoop环境,并且版本为hadoop-0.20.2。此版本较旧,主要用于教学或测试目的,在生产环境中建议使用更稳定的新版本。 1. **下载与解压Hadoop...

    hadoop之wordcount例程代码

    WordCount是Hadoop入门学习中的一个经典示例,用于统计文本中各个单词出现的次数。这个程序简单直观,很好地展示了MapReduce的工作原理。接下来,我们将深入探讨Hadoop的WordCount实例及其背后的原理。 首先,我们...

    hadoop wordcount 打包部署

    ### Hadoop WordCount项目打包与部署详解 #### 一、Hadoop WordCount简介 Hadoop WordCount 是一个经典的示例程序,用于演示如何利用Hadoop MapReduce框架进行大规模数据处理。WordCount 的基本任务是计算文本文件...

    hadoop实现wordcount

    在"wordcount"例子中,mapper接收文本行,对每一行进行分词,生成键值对(单词作为key,出现次数1作为value)。 接着是Reduce阶段,Hadoop将相同的key分组并将对应的values(出现次数)相加,从而得到每个单词的...

    Java实现Hadoop下词配对Wordcount计数代码实现

    在这个场景中,我们将探讨如何使用Java编程语言在Hadoop环境下实现一个基础但重要的任务——Wordcount。这个任务涉及到对文本数据的预处理、分词、以及对单词的计数。 首先,我们要理解Hadoop的MapReduce编程模型。...

    hadoop 框架下 mapreduce源码例子 wordcount

    在这个例子中,我们将深入理解Hadoop MapReduce的工作原理以及如何在Eclipse环境下实现WordCount源码。 1. **Hadoop MapReduce概述**: Hadoop MapReduce是由两个主要部分组成的:Map阶段和Reduce阶段。Map阶段将...

    在最终部署的Hadoop上运行WordCount程序实验报告.pdf

    WordCount程序就是这样一个例子,它统计文本中单词的出现次数,通过Map阶段将每个单词分发到不同的节点,然后在Reduce阶段汇总结果。 通过这个实验,学生不仅掌握了Linux操作系统和虚拟化技术,还深入理解了Hadoop...

    hadoop的wordcount简单实例

    这是一个wordcount的一个简单实例jar包,仅仅用来做测试。...map类:org.apache.hadoop.wordcount.WordCountMapReduce$WordCountMapper reduce类 org.apache.hadoop.wordcount.WordCountMapReduce$WordCountReducer

    hadoop mapreduce 例子项目,运行了单机wordcount

    这个例子项目是关于在单机环境中运行WordCount程序的,这是一个经典的MapReduce示例,用于统计文本文件中每个单词出现的次数。 首先,让我们深入了解Hadoop。Hadoop是由Apache软件基金会开发的开源框架,专门设计...

    mapretuce的WordCount例子

    运行这个程序,指定输入和输出路径,就可以在Hadoop集群上执行WordCount任务,统计输入文件中每个单词的出现次数。 总的来说,通过WordCount案例,我们可以深入理解MapReduce的运行机制,包括数据的分片、Mapper的...

    Java写的hadoop压缩worldcount例子

    在这个"Java写的hadoop压缩worldcount例子"中,我们主要关注的是如何利用Hadoop进行数据压缩以及实现一个简单的WordCount程序。WordCount是Hadoop入门的经典示例,它统计文本中每个单词出现的次数。 首先,Hadoop...

    cygwin+eclipse搭建hadoop开发环境,运行wordcount

    WordCount是Hadoop入门的经典例子,它统计文本文件中每个单词出现的次数。你将学习如何创建MapReduce程序,理解Mapper和Reducer的角色,以及如何在Hadoop集群上提交并执行任务。 在这个过程中,你可能会接触到...

    hadoop scala spark 例子项目,运行了单机wordcount

    【描述】中的内容与标题相同,再次强调这是一个基于Hadoop、Scala和Spark的项目,而且已经在单机环境下成功运行了WordCount任务。 【标签】中提到的“hadoop”是Apache Hadoop,一个开源的分布式计算框架,它允许在...

    hadoop入门wordcount

    在WordCount例子中,原始文本文件会被HDFS分割成多个块,并分别存储在集群的不同DataNode上,确保高可用性和容错性。 2. **MapReduce框架**:MapReduce是Hadoop的并行计算模型,它将大型任务分解为较小的子任务,...

    hadoop入门java代码hdfs文件操作 wordCount源码

    hadoop入门级的代码 Java编写 eclipse可运行 包含 hdfs的文件操作 rpc远程调用的简单示例 map-reduce的几个例子:wordcount 学生平均成绩 手机流量统计

    storm-wordcount例子

    "storm-wordcount"是Storm中的一个经典示例,用于演示如何处理实时数据流并进行简单的统计计算,类似于Hadoop的WordCount程序。这个例子的核心目标是统计输入文本中每个单词出现的次数。 在Storm中,数据流被抽象为...

    scala写的第一个wordcount例子

    在WordCount例子中,我们可能会看到如何使用map、filter和reduce等函数对集合进行操作,这些函数是函数式编程的核心概念。 3. MapReduce模型: WordCount通常被用来演示MapReduce编程模型,这是大数据处理领域中...

Global site tag (gtag.js) - Google Analytics