MapReduce_V1总结
来源:互联网 发布:pano.js 编辑:程序博客网 时间:2024/06/03 07:19
1,执行过程。
1.1,Map/Reduce Task任务分配。根据输入文件,基本上每个文件Block对应一个MapTask(也可能多对一),而Reduce Task则较少;
1.2,Map Task 执行map函数。执行map函数得到Key/Value对;
1.3,Partition过程。map函数输出的Key/Value要分配到Reduce Task,默认对Key/Value进行Hash之后随机分配,也可以继承自定义实现,并提供给Job。Partition的结果缓存在一个默认100M的空间内;
1.4,Spill过程。当100M缓存空间利用率溢出80%的时候,后台线程启动将缓存空间内存写入到local file中。写入前,对序列化后的Key/Value执行Sort和Combine操作。Combine在Map Task执行,一般就是Reduce函数,要求输入/输出的Key/Value类型一致。
1.5,Merge过程。Spill过程一次溢出产生一个local file,当发生多次溢出的时候,会产生多个local file,需要对多个local file合并生成一个local file。该过程也会执行Combine函数。
---------------------------------------------以上为Map Task控制执行的过程---------------------------------------
1.6,Copy过程。从TaskTracker节点将Map Task阶段生成的最终local file拷贝到Reduce Task的local file。
1.7,Merge过程。拷贝过程后,执行Sort|Merge操作。
1.8,Reduce过程。执行Reduce函数,生成最后的结果HDFS文件。
注:一般Combine函数和Reduce函数是同一个,另外在调用Reduce函数前,有一个默认的排序操作。Sort|Reduce函数在Map Task中的Spill过程和Merge过程,Reduce Task阶段的Merge过程和Reduce过程都有执行。
2,适用范围。
适用于对大规模数据的顺序独立计算,要求计算模型中输入块之间是可分解的,独立的。不适用于迭代式计算。
ChainMapper|ChainReduce可以将多个Map|Reduce过程串接起来,类似于[Mapper]+|[Reducer]+|[Mapper]+的链式结构。
- MapReduce_V1总结
- 总结
- 总结
- 总结
- 总结
- 总结!
- 总结
- 总结.
- 总结。
- 总结
- 总结
- 总结
- 总结
- 总结
- 总结
- 总结
- 总结
- 总结
- 比较“超链分析技术”专利与PageRank专利的三篇好文
- Javascript基础知识
- cgroup--device测试
- Android 关于显示键盘,布局错乱网上顶的问题
- 初识CSS
- MapReduce_V1总结
- IntelliJ IDEA、ReSharper、WebStorm创业公司购买全部5折
- 数据结构(9)之树的补充(赫夫曼树;线索二叉树树;树与二叉树转换)
- Linux cpufreq 机制详细解析
- 远程注入DLL(简单描述)
- gevent学习2- 并行ping
- Unicode与UCS的历史恩怨
- log device is empty!
- ui更新数据库 记录