mapreduce的应用开发步骤

网友投稿 236 2022-11-24

mapreduce的应用开发步骤

前言

关于mapreduce的应用开发

第一步:清楚问题是什么,确定解决问题的算法思路。

Mapper Mapper 将输入一个的key/value映射到0个或者多个中间格式的key/value形式。 用户需要实现map(WritableComparble,Writalbe,OutputCollector,Reporter)方法完成输入到输出的处理。同时可以选择重写JobConfigurable.configure(JobConf)方法完成Mapper的初始化工作;重写Closeable.close( )方法执行Mapper的清理工作。因为MapReduceBase实现了JobConfigurable和Closeable接口,因此程序只要继承MapReduceBase就可以。 程序通过调用OutputCollector.collect(WritableComparable,Writable)

Sort&Shuffle

得到mapper输出的中间结果后,传递给Reducer执行前会经历一个分组-》合并-》分配的过程。

1. 框架会按照key值,把所有中间结果的进行分成组。用户可以通过 JobConf.setOutputKeyComparatorClass(Class)来指

定具体负

责分组的Comparator。

2. 用户可以通过JobConf.setCombinerClass(Class)指定一个combiner,它负责对 中间过程的输出进行本地的聚集,这会有助于降低从Mapper到Reducer数

据传输量。(如WordCount会把key值相同的次数累加)

Sort&Shuffle的过程至此结束,Reducer过程开始。

Reducer Reducer会把Mapper的输出作为输入,因此Reducer的输入类型需要与Mapper的输出类型一致,Reducer任务会将输入的key/value归并为一个更小的结果集。用户需要实现 reduce(WritableComparable, Iterator, OutputCollector, Reporter)方法来对输入的key/value进行处理,同Mapper过程一样,用户可以选择重写JobConfigurable.configure(JobConf)方法完成Mapper的初始化工作,重写Closeable.close()

方法执行Mapper的清理工作。 用户可以通过JobConf.setNumReduceTasks(int)来设定一个作业中reduce任务的数 目。 Reduce任务调用OutputCollector.collect(WritableComparable, Writable)将处理结果写入HDFS。任务通过Reporter报告进度,至此MapReduce任务结束。

OutputCollector

Writable

JobConf

第三步:设置作业调度。

因而,用户编写mapreduce程序时,一方面要具备mapreduce程序思想;另一方面要符合mapreduce程序开发流程。同时,通过多写mapreduce程序,掌握并熟悉这种编程模型。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:CDH6.2离线安装
下一篇:数栈产品预告丨您的指标管理平台——EasyIndex即将上线
相关文章

 发表评论

暂时没有评论,来抢沙发吧~