本节我们主要学习MapReduce编程接口模型中的Mapper组件,主要是学习其中一些的方法,如setup()、map()和cleanup()等方法地使用。
我们先来看一下新版本中的Mapper代码:
public class Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT> {
public class Context
extends MapContext<KEYIN,VALUEIN,KEYOUT,VALUEOUT> {
public Context(Configuration conf, TaskAttemptID taskid,
RecordReader<KEYIN,VALUEIN> reader,
RecordWriter<KEYOUT,VALUEOUT> writer,
OutputCommitter committer,
StatusReporter reporter,
InputSplit split) throws IOException, InterruptedException {
super(conf, taskid, reader, writer, committer, reporter, split);
}
}
/**
* 在Map Task任务开始执行的时候首先会调用该方法,只执行一次
* 主要用于全局变量或重量级的操作的初始化,如集成HBase的时候,生成HTablePool
* 如pool = new HTablePool();
* 开发者一般可以不override该方法
* Called once at the beginning of the task.
*/
protected void setup(Context context
) throws IOException, InterruptedException {
// NOTHING
}
/**
* 开发者在该方法中来处理自己需要关注业务逻辑
* Called once for each key/value pair in the input split. Most applications
* should override this, but the default is the identity function.
*/
@SuppressWarnings("unchecked")
protected void map(KEYIN key, VALUEIN value,
Context context) throws IOException, InterruptedException {
context.write((KEYOUT) key, (VALUEOUT) value);//context.write()执行后开始map断的shuffle处理过程。
}
/**
* Called once at the end of the task.
* 在Map Task任务执行结束的时候调用该方法,且只执行一次
* 该方法用于释放在setup()中初始化的一些重量级的资源
* 一般情况下,开发者可以不用override该方法
*/
protected void cleanup(Context context
) throws IOException, InterruptedException {
// NOTHING
}
/**
* 该方法由框架调用,对于初级的Hadoop开发者而言,可以不需要修改该方法,但是对于
* 资深的Hadoop开发者来说,可以重写该方法以达到完全精确控制整个Mapper的处理流程
* Expert users can override this method for more complete control over the
* execution of the Mapper.
* @param context
* @throws IOException
*/
public void run(Context context) throws IOException, InterruptedException {
//Map Task执行流程的第一步
setup(context);
//第二步,循环调用map()方法来专注于开发者的业务逻辑处理
while (context.nextKeyValue()) {
map(context.getCurrentKey(), context.getCurrentValue(), context);
}
//第三步,清除Task的上下文信息或释放全局的重量级的资源
cleanup(context);
}
}
我们再来看一看Mapper的处理流程:
在整个Map Task的处理流程中,由几点需要特别注意:
1)、Map处理的中间结果会以临时数据文件方式被保存在linux的本地文件系统上,而非HDFS文件系统上。
2)、Map Task处理过的数据会溢写超过内存缓冲区阀值的数据,经排序、spill、和合并操作,经所有的临时的中间数据文件合并成一个大文件和一个索引文件,具体过程详见
MapTask详解
- 大小: 39.7 KB
分享到:
相关推荐
Hadoop技术内幕:深入解析YARN架构设计与实现原理 高清完整中文版PDF下载
hadoop2.7汇总:新增功能最新编译64位安装、源码包、API、eclipse插件下载
Hadoop 技术内幕:深入解析Hadoop Common 和HDFS 架构设计与实现原理
Hadoop技术内幕:深入解析YARN架构设计与实现原理.pdf
Hadoop技术内幕:深入解析Hadoop Common 和HDFS 架构设计与实现原理 (大数据技术丛书) 原版书籍,非扫描版,使用kindle可以打开,也可以转换为epub使用ibooks打开
Hadoop技术内幕:深入解析YARN架构设计与实现原理.pdf
《Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》内容简介:“Hadoop技术内幕”共两册,分别从源代码的角度对“Common+HDFS”和“MapReduce的架构设计和实现原理”进行了极为详细的分析。《Hadoop技术内幕:...
《Hadoop技术内幕:深入解析Hadoop Common和HDFS架构设计与实现原理》还从源代码实现中对分布式技术的精髓、分布式系统设计的优秀思想和方法,以及Java语言的编码技巧、编程规范和对设计模式的精妙运用进行了总结和...
《Hadoop技术内幕:深入解析Hadoop Common和HDFS架构设计与实现原理》由腾讯数据平台的资深Hadoop专家、X-RIME的作者亲自执笔,对Common和HDFS的源代码进行了分析,旨在为Hadoop的优化、定制和扩展提供原理性的指导。...
Hadoop技术内幕:深入解析MapReduce架构设计i与实现原理Hadoop技术内幕:深入解析MapReduce架构设计i与实现原理Hadoop技术内幕:深入解析MapReduce架构设计i与实现原理Hadoop技术内幕:深入解析MapReduce架构设计i与...
Hadoop技术内幕:深入解析MapReduce架构设计与实现原理 文字版Hadoop技术内幕:深入解析MapReduce架构设计与实现原理 文字版Hadoop技术内幕:深入解析MapReduce架构设计与实现原理 文字版
Hadoop硬实战:Hadoop in Practice
Hadoop技术内幕:深入解析YARN架构设计与实现原理 Hadoop技术内幕:深入解析YARN架构设计与实现原理
Hadoop技术内幕:深入解析YARN架构设计与实现原理(扫描版)Hadoop技术内幕:深入解析YARN架构设计与实现原理(扫描版)Hadoop技术内幕:深入解析YARN架构设计与实现原理(扫描版)
本书由浅入深,全面、系统地介绍了Hadoop这一高性能处理海量数据集的理想工具。本书的内容主要包括hdfs、mapreduce、hive、hbase、mahout、pig、zookeeper、avro、chukwa等与hadoop相关的子项目,各个知识点都精心...
Hadoop技术内幕:深入解析MapReduce架构设计与实现原理(扫描版)Hadoop技术内幕:深入解析MapReduce架构设计与实现原理(扫描版)Hadoop技术内幕:深入解析MapReduce架构设计与实现原理(扫描版)
书籍字体清晰,欢迎各位感兴趣的人来下载。若资源积分困难户想下载,可以给我私聊下。我会适当的考虑。
《Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》由Hadoop领域资深的实践者亲自执笔,首先介绍了MapReduce的设计理念和编程模型,然后从源代码的角度深入分析了RPC框架、客户端、JobTracker、TaskTracker和...
Hadoop技术内幕:深入解析MapReduce架构设计与实现原理.pdf