文档章节

Hadoop之HelloWorld

ihaolin
 ihaolin
发布于 2014/01/26 22:52
字数 306
阅读 980
收藏 3

Hadoop之HelloWorld实例:

  • 目的:将输入文件的中的Hello,World输出到文件为World Hello.
  • 输入文件内容:

  • 代码实例:
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.LongWritable;
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.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

/**
 * HelloWorld Job
 * 将输入文件中的Hello,World, 以World Hello输出到文件
 */
public class HelloWorld {

	/**
	 * 映射器
	 * 用于将我们的数据进行预处理
	 */
	private static class MyMapper extends Mapper<LongWritable, Text, Text, Text>{
		@Override
		protected void map(LongWritable key, Text value, Context context)
				throws IOException, InterruptedException {
			System.out.println("mapper running...");
			System.out.println("key=" + key.get());
			System.out.println("value=" + value.toString());
			String[] strValue = value.toString().split(",");
			context.write(new Text(strValue[1]), new Text(strValue[0]));
		}
	}
	
	/**
	 * 处理器
	 * 用于将mapper预处理的数据记录进行业务计算,然后输出
	 */
	private static class MyReducer extends Reducer<Text, Text, Text, Text>{
		@Override
		protected void reduce(Text key, Iterable<Text> values,
				Context context)
				throws IOException, InterruptedException {
			System.out.println("reducer running...");
			System.out.println("key=" + key.toString());
			String val = values.iterator().next().toString();
			System.out.println("value=" + val);
			context.write(key, new Text(val));
		}
	}
	
	public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
		Configuration configuration = new Configuration();
		Job job = new Job(configuration, "helloworld_job");
		job.setJarByClass(HelloWorld.class);
		job.setMapperClass(MyMapper.class);
		job.setReducerClass(MyReducer.class);
		
		job.setInputFormatClass(TextInputFormat.class);
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(Text.class);
		
		FileInputFormat.addInputPath(job, new Path("hdfs://hadoopmaster:9000/in/helloworld.txt"));
		String outFileExt = "_" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
		FileOutputFormat.setOutputPath(job, new Path("hdfs://hadoopmaster:9000/out/helloworld"+outFileExt));
		System.out.println(job.waitForCompletion(true));
		
	}
}
  • 将代码打包, 拷贝到hadoopmaster上:

  • 执行jar包:
hadoop jar helloworld.jar
  • 得到输出文件:

  • 收工。

© 著作权归作者所有

上一篇: jdk8之lambda
下一篇: Linux之监控内存
ihaolin

ihaolin

粉丝 263
博文 164
码字总数 106524
作品 4
朝阳
高级程序员
私信 提问
2-Hadoop学习之旅-MapReduce

MapReduce设计理念 移动计算,而不是移动数据。 MapReduce之Helloworld(Word Count)处理过程 MapReduce的Split大小 max.split(200M) min.split(50M) block(128M) max(min.split,min(max.s......

SET
2016/09/10
122
1
Hadoop入门之Hadoop中的HelloWorld程序

在linux平台上执行wordcount,有官方示例,相应的jar包放在hadoop-2.0.0-cdh4.5.0sharehadoopmapreduce1下的hadoop-examples-2.0.0-mr1-cdh4.5.0.jar(注:本人用的是CDH4.5.0版本),我们首...

ThinkStone
2014/02/27
4.1K
1
Ubuntu下利用Myeclipse开发hadoop程序

开发的大环境是Ubuntu11.04,hadoop0.20.2,myeclipse9.1 首先要安装Myeclipse,在Ubuntu下安装Myeclipse和windows环境下安装的方法一样,下载myeclipse-9.1-offline-installer-linux.run然后...

混绅士
2018/06/28
0
0
逐行分析Hadoop的HelloWorld

学写代码的时候,我们总是先从helloworld开始写起,那么学习Hadoop,我们也必不可少的从helloworld开始,那么WordCount作为经典的Hadoop程序,可以作为我们庖丁解牛的材料,进而从代码的角度...

牧师-Panda
2016/11/06
50
0
centos7 yum安装java运行环境,初识hadoop

安装java运行环境 1.实验机相关信息: [root@node2 ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [root@node2 ~]# uname -r 3.10.0-327.el7.x86_6 2.配置epel源,以y......

smile68
2018/04/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

NASA的10条编码规则

关于NASA的10条编程规则,他们曾表示:这些规则的作用就像汽车上的安全带:最初,它们可能有点不舒服,但过了一会儿,它们的使用就变成了第二天性,而没有使用它们就变得不可想象。 Gerard J...

京东云技术新知
30分钟前
78
0
TortoiseSVN图标未显示在Windows 7下

我似乎无法在Windows 7下显示图标,我真的很想念Windows XP。 怎么修好? #1楼 他们在这里展示得很好 您使用的是64位版本的Windows 7以及32位版本的TortoiseSVN吗? 如果是这样,那么它们只会...

javail
54分钟前
94
0
开源播放器

DPlayer

glen_xu
今天
190
0
gitlab Error:Gitaly - load linguist colors - permission denied

报错信息 2020-01-20_14:35:08.43180 time=“2020-01-20T14:35:08Z” level=info msg=“Starting Gitaly” version=“Gitaly, version 0.81.0, built 20180225.183225” 2020-01-20_14:35:0......

JennerLuo
今天
129
0
微信小程序的自动化测试框架

微信发布了小程序的自动化测试框架Minium,提供了多种运行验证方式,其特点: 支持一套脚本,iOS & Android & 模拟器,三端运行 提供丰富的页面跳转方式,看不到也能去得到 可以获取和设置小...

测者陈磊
今天
88
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部