文档章节

Hadoop的mapreduce的简单用法

魔法王者安琪拉
 魔法王者安琪拉
发布于 2018/08/23 10:11
字数 439
阅读 16
收藏 0

 Mapreduce初析

  Mapreduce是一个计算框架,既然是做计算的框架,那么表现形式就是有个输入(input),mapreduce操作这个输入(input),通过本身定义好的计算模型,得到一个输出(output),这个输出就是我们所需要的结果。

  我们要学习的就是这个计算模型的运行规则。在运行一个mapreduce计算任务时候,任务过程被分为两个阶段:map阶段和reduce阶段,每个阶段都是用键值对(key/value)作为输入(input)和输出(output)。而程序员要做的就是定义好这两个阶段的函数:map函数和reduce函数。

  Mapreduce的基础实例

  jar包依赖

<dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client</artifactId>
      <version>2.7.6</version>
</dependency>

代码实现

 map类

 

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

 

reduce类

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

}

  main方法

   

public class WordCount {
	public static void main(String[] args) throws Exception {
		Configuration conf = new Configuration();
		Job job = Job.getInstance(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(args[0]));
		FileOutputFormat.setOutputPath(job, new Path(args[1]));
		System.exit(job.waitForCompletion(true) ? 0 : 1);

	}
}

打成jar包放到hadoop环境下

./hadoop-2.7.6/bin/hadoop jar hadoop-mapreduce-1.0.0.jar com.dongpeng.hadoop.mapreduce.wordcount.WordCount /user/test.txt /user/in.txt

 

© 著作权归作者所有

共有 人打赏支持
魔法王者安琪拉
粉丝 79
博文 99
码字总数 32877
作品 0
深圳
程序员
私信 提问
阿里云 E-MapReduce产品优势及使用场景

E-MapReduce 是构建于阿里云 ECS 弹性虚拟机之上,利用开源大数据生态系统,包括 Hadoop、Spark、HBase,为用户提供集群、作业、数据等管理的一站式大数据处理分析服务。 产品优势: 与自建集...

凹凹凸曼
2018/09/12
0
0
Hadoop源代码分析(包hadoop.mapred中的MapReduce接口)

前面已经完成了对org.apache.hadoop.mapreduce的分析,这个包提供了Hadoop MapReduce部分的应用API,用于用户实现自己的MapReduce应用。但这些接口是给未来的MapReduce应用的,目前MapReduce...

超人学院
2015/05/25
0
0
Hadoop 中利用 mapreduce 读写 mysql 数据

有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv、uv 数据,然后为了实时查询的需求,或者一些 OLAP 的需求,我们需要 mapreduce 与 mysql 进行数据的交互,而这些特...

大数据之路
2013/07/29
0
1
2014-11-12--Hadoop的基础学习(三)--Hadoop中MapReduce框架入门

1.MapReduce的简单概念 百度百科:MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",和他们的主要思想,都是从函数式编程语言里借来的...

查封炉台
2014/11/16
0
8
如何分布式运行mapreduce程序

如何分布式运行mapreduce程序 一、 首先要知道此前提 若在windows的Eclipse工程中直接启动mapreduc程序,需要先把hadoop集群的配置目录下的xml都拷贝到src目录下,让程序自动读取集群的地址后...

Zero零_度
2015/09/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

比特币转账nodejs

去nodejs官网下载nodejs $ node index.js启动项目

八戒八戒八戒
30分钟前
1
0
Android8.1 SystemUI 之图案锁验证流程

在Keyguard之滑动解锁流程一文中,我们已经分析过,不同的安全锁类型是在KeyguardSecurityContainer中使用getSecurityView根据不同的securityMode inflate出来,并添加到界面上的。那么本文我...

天王盖地虎626
33分钟前
1
0
LNMP 环境搭建(Linux Nginx MariaDB PHP)

安装顺序:MariaDB-->PHP-->Nginx 一、MariaDB安装 官方下载网站:https://downloads.mariadb.org/ 1. 获取MySQL 下载:wget http://mirrors.neusoft.edu.cn/mariadb//mariadb-10.2.8/bintar......

Yue_Chen
36分钟前
1
0
MySQL中授权(grant)和撤销授权(revoke

MySQL中授权(grant)和撤销授权(revoke MySQL 赋予用户权限命令的简单格式可概括为: 1 grant 权限 on 数据库对象 to 用户   一、grant 普通数据用户,查询、插入、更新、删除 数据...

linjin200
39分钟前
1
0
你分得清楚Maven的聚合和继承吗?

用了 Maven 好几年了,许多人还是只懂得简单的依赖坐标。对于 Maven 的聚合和继承还是一知半解,甚至很多人以为是同一个东西。但其实聚合是用于快速构建项目,是表示项目与子项目之间的关系。...

java菜分享
41分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部