MapReduce 编程 系列十二 Reduce阶段内部细节和调节参数
来源:互联网 发布:17年网络流行语 编辑:程序博客网 时间:2024/05/07 19:00
Reduce计算分为若干阶段
1. copy(或者叫shuffle)阶段和merge阶段并行
之前Map产生的结果被存放在本地磁盘上,这时需要从reduce节点将数据从map节点复制过来。放得下进内存,比较大的则写到本地磁盘。
同时,有两个线程对已经获得的内存中和磁盘上的数据进行merge操作。
具体细节是:
通过RPC调用询问task tracker已经完成的map task列表,shuffle(洗牌)是对所有的task tracker host的洗牌操作,这样可以打乱copy数据的顺序,防止出现网络热点(大量进程读取一个task tracker节点的数据)。
可以复制的任务被存放在scheduledCopies中。
一旦有了要复制到数据,会启动多个MapOutputCopier线程,通过HTTP GET请求复制数据,如果数据较大,存入磁盘,否则存入缓存。
对于缓存中,有线程InMemoryFSMerge线程负责merge,对文件,有LocalFSMerger线程负责merge。
因此观察jobtracker会看到map操作还没有完全结束,reduce操作已经开始了,就是进入了copy阶段。
2. sort阶段和调用reducer的reduce函数的并行
sort对Map阶段传来的<key,value> 数据针对key执行归并排序,产生<key, values>
用户编写的reduce将上面的<key, values>传递进ruduce函数处理
并行的算法提高了程序性能,具体算法以后再探讨。
3. write
将结果写到HDFS上。
Reduce的调优参数
mapred.reduce.parallel.copies 默认是5,表示有多少个并发线程去从task tracker节点复制数据
io.sort.factor 又出现了,默认10,仍然指的是并行合并文件的数目
mapred.job.shuffle.merge.percent 默认是0.66, 超过66%,就会将开始合并,然后往磁盘上写数据
mapred.inmem.merge.threshold 默认是1000,超过这个临界值,就会将开始合并,然后往磁盘上写数据
- MapReduce 编程 系列十二 Reduce阶段内部细节和调节参数
- MapReduce 编程 系列十一 Map阶段内部细节和调节参数
- MapReduce(十二): Map和Reduce阶段数据合并的处理
- MapReduce作业Map阶段和Reduce阶段重要过程详述(Partitioner、Combiner、Shuffle三个阶段的解析)
- mapreduce 的map shuffle reduce 阶段解析
- MapReduce 编程 系列十 使用HashPartitioner来调节Reducer的计算负载
- map()和reduce()的细节
- InputSplit&&处理阶段mapReduce【partioner,combiner,shuffle】->reduce
- [MapReduce] 如何向map和reduce脚本传递参数,加载文件和目录
- [MapReduce] 如何向map和reduce脚本传递参数,加载文件和目录
- [MapReduce] 如何向map和reduce脚本传递参数,加载文件和目录
- ALSA编程细节分析---Linux 声音调节
- Python+Hadoop Streaming实现MapReduce(如何给map和reduce的脚本传递参数)
- Python+Hadoop Streaming实现MapReduce(如何给map和reduce的脚本传递参数)
- MapReduce中job参数及设置map和reduce的个数
- Python+Hadoop Streaming实现MapReduce(如何给map和reduce的脚本传递参数)
- MapReduce中job参数及设置map和reduce的个数
- MapReduce 编程 系列十二 用Hadoop Streaming技术集成newLISP脚本
- 数据统计 题目是输入一些整数,求出它们的最大值,最小值和平均值
- 手机自适应网页设计(html5/css3控制)
- 页面翻转效果二
- 程序员求职面试推荐书籍
- 【小菜鸟】WEKA的安装和困难的解决
- MapReduce 编程 系列十二 Reduce阶段内部细节和调节参数
- Hadoop实例WordCount程序一步一步运行
- linux学习
- 数据挖掘笔记-文本情感简单判断
- Android bootloader—LK的分析之如何解析boot.img【转载】
- 章鱼哥—VB.NET 如何实现代码自动生成控件 添加绑定事件
- 【Apache Tomcat】教你一步一步在Windows 8.1系统上配置apache-tomcat-8.0.12-windows-x64
- JAVA基础4(代码剖析)
- [ACM] ZOJ 3209 Treasure Map ( Dancing Links 精确覆盖,矩形覆盖)