hadoop的核心就是shuffle,最好的学习方式就是看源代码
但是编译hadoop的源代码成本太大,而且由于maven中的有些资源被天草屏蔽的关系,不推荐。
建立一个项目,引用最简单的wordcount, 将jar包attach到源代码上,再用远程调试就ok了。
打开mapreduce的调试端口
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx200m -Xdebug -Xrunjdwp:transport=dt_socket,address=50051,server=y,suspend=y</value>
</property>
修改spill的参数 默认100
<name>mapreduce.task.io.sort.mb</name>
<value>1</value>
mapreduce的info日志
/usr/hadoop/hadoop-2.2.0/logs/userlogs
map端的shuffle
collect阶段
mapreduce.task.io.sort.mb 默认100(MB)
每次Mapper中context.write(word, one); 都会调用correct方法,将数据放到buffer中,
当buffer 超过了0.8*100MB=80MB 时会触发sortAndSpill方法,将buffer中的数据spill到磁盘,文件大小为40MB
如果设置了combiner的话,spill时会调用reduce的合并代码减少临时文件的输出14MB(可能)
可以用一个2MB的文件来做测试, 将mb调成1
merge阶段
mapreduce.task.io.sort.factor 默认 10
从spill的磁盘文件中进行
多路归并排序,默认是10个一组
如果设置了combiner的话,也会进行一次combine
MapTask
1573行 是spill输出的文件
1820行 是merge的输出文件
可以用strings 命令看看输出的内容
注意
如果没有combiner的话, shuffle-Map端的输出还是
a 1
a 1
b 1
的形式, 不是
a 2
b 1
如果只有一个文件并且设置了combiner的话, 就不需要reduce端了。
reduce的shuffle端
就是各种merge
内存merge,磁盘merge, final merge
参考
http://www.wnt.com.cn/html/news/tophome/top_xytd/top_xytd_jswz/bbs_service/20130711/111140562.html
http://blog.csdn.net/mrtitan/article/details/8711366
http://langyu.iteye.com/blog/1171091
http://zhangjie.me/eclipse-debug-hadoop/
分享到:
相关推荐
以上总结的知识点均来自给定文件的内容,涵盖了Hadoop的学习资料、版本历史、生态圈、安装、HDFS、MapReduce、Zookeeper、HBase、Hive、Storm以及数据挖掘和推荐系统等多个方面,为学习和使用Hadoop提供了全面的理论...
3. **MapReduce**:深入学习Map函数和Reduce函数的编写,以及作业提交和执行流程,理解shuffle和sort过程。 4. **YARN**:作为Hadoop的资源管理系统,YARN负责任务调度和集群资源分配,学习如何管理和优化资源使用。...
### Hadoop 学习总结 #### 一、HDFS简介 **1.1 数据块(Block)** HDFS(Hadoop Distributed File System)是Hadoop的核心组件之一,它主要用于存储大规模的数据集。HDFS默认的基本存储单位是64MB的数据块。与...
本文将基于“Hadoop学习总结和源码分析”这一主题,结合提供的文档资源,深入探讨Hadoop的核心组件HDFS(Hadoop Distributed File System)和MapReduce。 首先,我们从“Hadoop学习总结之一:HDFS简介.doc”开始,...
以下是对Hadoop学习的详细总结: **HDFS(Hadoop Distributed File System)简介** HDFS是Hadoop的核心组件之一,是一个高度容错性的分布式文件系统。它被设计成能在普通的硬件上运行,并能够处理大规模的数据集。...
【Hadoop大数据学习线路图】 在大数据领域,Hadoop是一个至关重要的开源框架,它为处理和存储海量数据提供了强大的解决方案。本文将围绕Hadoop大数据学习路线展开,帮助初学者逐步掌握这一核心技术。 1. **云计算...
根据提供的信息,我们可以详细地解析出关于Hadoop学习时间轴中的关键知识点,这些知识点主要集中在Hadoop的基础架构、MapReduce工作原理以及Hive在实际应用中的优化等方面。 ### Hadoop学习时间轴概述 Hadoop是一...
【Hadoop学习总结(面试必备)】 Hadoop作为大数据处理的核心框架,因其分布式存储和计算的能力,成为业界处理海量数据的首选工具。本总结将深入探讨Hadoop的主要组件、工作原理以及在面试中可能遇到的相关知识点。...
3. **MapReduce编程**:学习Java编程,实现MapReduce作业,理解数据分片、Map函数、Shuffle过程和Reduce函数。 4. **YARN**:下一代资源调度器,用于管理和分配集群资源,取代了最初的JobTracker。 5. **Hadoop生态*...
【描述】"实战hadoop,源码,刘鹏,开启通向云计算的捷径"指出,学习Hadoop源码不仅是提升技术能力的有效途径,而且由知名专家刘鹏指导,能够帮助我们更快地掌握云计算的关键技术。刘鹏是Hadoop领域的权威专家,他的...
3. **Shuffle与Reduce阶段**:根据词作为键进行排序,所有包含同一词的微博ID和TF值会聚集到同一个Reduce任务。在Reduce阶段,计算每个词的IDF值,然后将所有微博的TF值乘以IDF值,得到最终的TF-IDF得分。 4. **...
在MapReduce方面,会学习编写MapReduce程序,理解Shuffle和Sort过程,以及优化MapReduce性能的方法。 3. **高级阶段**:涉及Hadoop生态系统中的其他组件,如Hive(数据仓库工具)、Pig(数据分析工具)、HBase...
Hadoop是Apache软件基金会开发的一个开源分布式计算框架,它的出现主要解决了海量数据...对于大数据从业者来说,理解和掌握这个版本的Hadoop和Hive是深入学习大数据技术的基础,也是构建企业级大数据解决方案的关键。
Hadoop学习文档是一个集合,包含了深入理解Hadoop框架及其应用的关键知识点。Hadoop是Apache软件基金会开发的一个开源分布式计算框架,旨在处理和存储大规模数据集。这个文档可能涵盖了Hadoop的核心组件、工作原理、...
"Hadoop开发者第一期、第二期、第三期"是连续的进阶学习材料,可能涵盖了Hadoop生态系统的其他组件,如Hive(数据仓库工具)、Pig(数据分析工具)、Spark(快速数据处理框架)等,以及高级主题,如数据分桶、容错...
- MapReduce 模型:理解Map和Reduce两个主要阶段,以及Shuffle和Sort的过程。 - JobTracker与TaskTracker(旧版)/ResourceManager与NodeManager(YARN):了解任务调度和执行的逻辑。 - 自定义Mapper和Reducer:...
6. **Hadoop数据流**:学习数据是如何从输入源经过map任务,shuffle过程,再到达reduce任务的,以及中间键值对的分区和排序机制。 7. **Hadoop容错机制**:理解Hadoop如何处理硬件故障,包括数据块的复制策略,节点...
本资源摘要信息涵盖了Hadoop的多个方面,包括版本、4V特征、大数据存储、HDFS、MapReduce、SecondaryNameNode、Hadoop shell命令、集群管理工具等,非常适合Hadoop初学者和开发者学习和了解Hadoop的相关知识点。
这个课程涵盖了从Hadoop的基础概念到高级应用的方方面面,旨在帮助学习者逐步提升对Hadoop的理解和实战能力。以下是根据提供的章节内容进行的详细知识点解析: 1. **第三章:初识Hadoop 2.x** - Hadoop概述:介绍...
这个“Hadoop.zip”压缩包包含了丰富的Hadoop学习资源,是深入理解和掌握Hadoop技术的宝库。下面我们将详细探讨Hadoop的各个方面。 一、Hadoop概述 Hadoop是一个分布式计算框架,主要由两个核心组件构成:Hadoop ...