Hadoop如何组织中间数据的存储和传输(源码级分析)2

Hadoop如何组织中间数据的存储和传输(源码级分析)1 解读了MapTask的整体执行流程,该文档将分析MapTask从内存缓冲区刷新到本地磁盘的过程。 MapTask环境设置:io.sort.mb = 200MB, io.sort.spill.percent=0.8. 1、处理内存缓冲区位于MapTask.MapOutputBuffer类中,所有的信息都被存储在byte[] kvbuffer中,它的长度为bufferlen=200*1024*1024 对于任意一条<K,V>记录,需要记录如下: 1)META DATA,主要包括: private static final int INDEX = 0;            // index offset in acct private static final int VALSTART = 1;         // val offset in acct private static final int KEYSTART = 2;         // key offset in acct private static final int PARTITION = 3;        // partition offset

Hadoop如何组织中间数据的存储和传输(源码级分析)1

Hadoop以可扩展、易用、分布式处理海量数据为目标,在海量数据处理领域不断地制造着神话。其中,最为重要的一个特性就是中间数据的使用上。Hadoop将Map阶段产生的结果,不直接存入HDFS,而是放在本地磁盘中作为中间数据存储起来。等到Reduce启动以后,就从Map阶段拉取中间数据。这个过程成为了MapReduce中的一个大家津津乐道的经典过程,但是,它内部是如何实现的呢? 传输其中中间是通过Http方式来传输Map阶段产生的中间文件到Reducer,分析这个过程是如何实现的,首先看Hadoop的执行task的流程。 这里面最引人注意的是Hadoop重新启动了一个Java虚拟机来启动一个Task,这个task可能是MapTask和ReduceTask,这样做是为了用户定义的MapTask和ReduceTask与JobTracker-TaskTracker体系隔离开来,保证安全。另外也使得一些配置参数可以重新设置。 下面貼上

MapReduce学习曲线(初学者)

Jeaf Dean 在OSDI04上论文:http://labs.google.com/papers/mapreduce.html 然后有如下的列表,请关注klose的分析的文章: MapReduce 1  2  3  4  5 HaLoop: hadoop对于迭代MapReduce的支持,从而丰富应用范围。 部署多个Hadoop集群,资源复用 Data Join MapReduce优化 Hadoop探索 From Binospace, post MapReduce学习曲线(初学者) 文章的脚注信息由WordPress的wp-posturl插件自动生成