能进行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
分享到:
相关推荐
【压缩包子文件的文件名称列表】"hadoop_helloworld" 可能包含以下内容: 1. `WordCount.java`:这是实现单词计数的Java源代码,包含了Mapper和Reducer类。 2. `input.txt`:作为示例的输入文本文件,里面包含一些...
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 能调试" 的主题意味着我们将深入理解如何设置、运行以及调试 MapReduce 任务,特别是针对入门级的 "wordcount" 示例。 MapReduce 分为两个主要阶段:Map 阶段和 Reduce 阶段。Map ...
要运行这个"HelloWorld-WordCount"程序,首先确保你的Eclipse已经安装了Hadoop相关的Maven插件,接着导入这个项目。在项目中,你会看到源代码文件,包括`WordCount.java`,这是实现MapReduce任务的主要类。这个类会...
这个程序是基本的字数统计,Hadoophello world Hadoop 多行读取: 该程序读取传递两行作为记录而不是默认的一行 Hadoop 将数组传递给减速器: 该程序将一个数组从映射器传递给化简器,为了传递数组,需要扩展 ...
Hadoop “Hello World” 示例-附件资源
#### 二、Hadoop Hello World ##### 2.1 Hadoop简介 Hadoop是一个开源软件框架,用于分布式存储和处理大规模数据集。它基于Google的MapReduce论文构建,可以高效地处理PB级别的数据。 - **HDFS (Hadoop Distributed ...
性的博客和演示文稿,它们会教你如何做一个“Hello World”的示例。当足够熟悉之后,你就会 知道如何在邮件列表中提问,在大小会议中邂逅专家,甚至自己阅读源代码。但在这中间存在一 个巨大的知识落差,你的胃口更...
例如,输入文件包含"Hello world",则WordCount程序的输出应为"Hello 1"和"world 1"。 ### 二、实验原理与步骤 1. **配置Hadoop环境** - **Java安装与环境变量配置**:确保系统已安装Java 1.8,并配置好JAVA_HOME...
3. **编译代码**:打开命令行终端,导航到`HelloWorld.java`所在的目录,然后运行`javac HelloWorld.java`命令。这将生成一个名为`HelloWorld.class`的字节码文件。 4. **运行程序**:接着,输入`java HelloWorld`...
通过hdfs getconf -confKey dfs.ha.automatic-failover.enabled获取zkfc的机器列表,并在这些机器上关闭zk
Hadoop 3.2.2 是一个重要的大数据处理框架,主要设计用于分布式存储和处理海量数据。这个版本的Hadoop引入了诸多改进和优化,旨在提高性能、稳定性和易用性。在Linux环境下,Hadoop通常被用作大数据处理的核心组件,...
echo "Hello World Bye World" > file01 echo "Hello Hadoop Goodbye Hadoop" > file02 ``` 2. **上传文件至HDFS**: - 在HDFS中创建一个名为`input`的目录: ```bash hadoop fs -mkdir input ``` - 将本地...
例如,如果输入是"hello world hello",那么Mapper会输出("hello", 1)、("world", 1)这样的键值对。 接下来是Reduce阶段,这个阶段的任务是对Map阶段产生的所有相同键的值进行聚合。在我们的计数器场景中,Reducer...
- 在Eclipse中创建一个新的MapReduce项目,编写一个简单的Hello World程序。 - 使用Eclipse的`Run As` -> `Map/Reduce Job`运行该程序,如果一切配置正确,你应该能在Hadoop的控制台输出看到你的程序结果。 通过...
Hadoop是Apache软件基金会开发的一个开源分布式计算框架,它的核心设计目标是处理和存储大规模数据。Hadoop2.6.4是Hadoop发展中的一个重要版本,它提供了许多增强的功能和性能优化,使得在Linux环境下部署和运行大...
本次实验的目的是让大家熟悉搭建智能手机开发平台的过程,了解Andorid开发项目的基本文件目录结构,并实现HelloWorld小例程。 实验要求 1. 完成Android开发平台的搭建及相关配置 2. 创建项目并熟悉文件目录结构 3. ...