一、收集 执行NewOutputCollector对象的write方法就开启了对map输出数据的收集过程: ? collector是一个MapOutputCollector类型的变量,它是实际执行收集数据功能的对象载体: private final MapOutputCollector<K,V> c ...
分类:
其他好文 时间:
2020-06-08 18:53:43
阅读次数:
64
MapReduce源码分析之Task中关于对应TaskAttempt存储Map方案在性能和业务逻辑方面的考虑,您或许不以为然,可能觉得性能提升不大,但是如果在大规模集群中,当作业数量庞大、任务数目数量庞大时,这种优势就愈发明显,而它带来的好处,于已,于别的作业来说,都会是一种福音!这种设计上的细节,值得我们学习、借鉴与反思!...
分类:
其他好文 时间:
2016-05-07 23:55:25
阅读次数:
1070
JobSubmitter,顾名思义,它是MapReduce中作业提交者,而实际上JobSubmitter除了构造方法外,对外提供的唯一一个非private成员变量或方法就是submitJobInternal()方法,它是提交Job的内部方法,实现了提交Job的所有业务逻辑。本文,我们将深入研究MapReduce中用于提交Job的组件JobSubmitter。...
分类:
其他好文 时间:
2016-04-23 01:45:46
阅读次数:
588
JobSplitWriter被作业客户端用于写分片相关文件,包括分片数据文件job.split和分片元数据信息文件job.splitmetainfo。分片数据文件job.split存储的主要是每个分片对应的HDFS文件路径,和其在HDFS文件中的起始位置、长度等信息,而分片元数据信息文件job.splitmetainfo存储的则是每个分片在分片数据文件job.split中的起始位置、长度等信息。...
分类:
其他好文 时间:
2016-04-21 10:25:08
阅读次数:
185
LocatedFileStatusFetcher通过多线程的方式,实现了针对给定输入路径数组,使用配置的线程数目来获取数据块位置的核心功能。它通过google的可监听并发技术ListenableFuture、ListeningExecutorService,实现了两层级别的子任务的并发执行、结果监听与回调处理,还使用了可重入互斥锁ReentrantLock、多线程间协调通信工具Condition来解决多线程之间的并发同步问题,特别是主任务线程与子任务线程间的主从协调、通信等。...
分类:
其他好文 时间:
2016-04-20 16:27:44
阅读次数:
209
转自:http://www.cnblogs.com/forfuture1978/archive/2010/11/19/1882279.html转者注:本来想在Hadoop学习总结系列详细解析HDFS以及Map-Reduce的,然而查找资料的时候,发现了这篇文章,并且发现caibinbupt已经对Ha...
分类:
其他好文 时间:
2016-01-05 22:45:22
阅读次数:
362
一:Mapper类
在Hadoop的mapper类中,有4个主要的函数,分别是:setup,clearup,map,run。代码如下:
protected void setup(Context context) throws IOException, InterruptedException {
// NOTHING
}
protected void map(KEYIN...
分类:
移动开发 时间:
2015-08-07 14:50:29
阅读次数:
187
MapReduce源码分析之MapTask详解的后半段文章。在分析过程中我们知道了MapTask是如何使用循环缓存区管理数据,知道了数据在缓存不下是如何做spill处理的,spill输出的数据格式,combiner如何处理,如何将多一个文件merge为一个等等。也希望通过阅读这部分源码能学习到部分设计思路,能在未来的设计中提供多一种思路。...
分类:
其他好文 时间:
2014-08-05 00:47:18
阅读次数:
484
前言 MapReduce的源码分析是基于Hadoop1.2.1基础上进行的代码分析。 该章节会分析在MapTask端的详细处理流程以及MapOutputCollector是如何处理map之后的collect输出的数据。 map端的主要处理流程
图1 MapTask处理流程 图1所示为MapTask的主要代码执行流程,在MapTask启动后会进入入口run函数,根据是否使用...
分类:
其他好文 时间:
2014-07-14 13:31:33
阅读次数:
392
ReduceTask的运行
Reduce处理程序中需要执行三个类型的处理,
1.copy,从各map中copy数据过来
2.sort,对数据进行排序操作。
3.reduce,执行业务逻辑的处理。
ReduceTask的运行也是通过run方法开始,
通过mapreduce.job.reduce.shuffle.consumer.plugin.class配置shuffle的plugin,
...
分类:
其他好文 时间:
2014-05-14 20:23:57
阅读次数:
519