博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hadoop中combiner的作用是什么?
阅读量:3516 次
发布时间:2019-05-20

本文共 763 字,大约阅读时间需要 2 分钟。

1.Partition

把 Map任务输出的中间结果按 key的范围划分成 R份( R是预先定义的 Reduce任务的个数),划分时通常使用hash函数如: hash(key) mod R,这样可以保证某一段范围内的key,一定是将会由一个Reduce任务来处理,这样可以简化 Reduce获取计算数据的过程。

2.Combine操作

在 partition之前,还可以对中间结果先做 combine,即将中间结果中有相同 key的 对合并成一对。combine的过程与 Reduce的过程类似,很多情况下就可以直接使用 Reduce函数,但 combine是作为 Map任务的一部分,在执行完 Map函数后紧接着执行的,而Reduce必须在所有的Map操作完成后才能进行。Combine能够减少中间结果中 对的数目,从而减少网络流量。

3.Reduce任务从 Map任务结点取中间结果

Map 任务的中间结果在做完 Combine和 Partition之后,以文件形式存于本地磁盘。中间结果文件的位置会通知主控 JobTracker,JobTracker再通知 Reduce任务到哪一个DataNode上去取中间结果。注意所有的 Map任务产生中间结果均按其 Key用同一个 Hash函数划分成了 R份,R个 Reduce任务各自负责一段 Key区间。每个 Reduce需要向许多个原Map任务结点以取得落在其负责的Key区间内的中间结果,然后执行 Reduce函数,形成一个最终的结果文件。

4.任务管道

有R个 Reduce任务,就会有 R个最终结果,很多情况下这 R个最终结果并不需要合并成一个最终结果。因为这 R个最终结果又可以做为另一个计算任务的输入,开始另一个并行计算任务。

了解更多相关就业面试题欢迎关注小编!

转载地址:http://eogmj.baihongyu.com/

你可能感兴趣的文章
cv2.error: OpenCV(3.4.2) c:\projects\opencv-python\opencv\modules\imgproc\src\color.hpp:25
查看>>
前端网页学习7(css背景属性)
查看>>
前端网页学习8(css三大特性:层叠性,继承性,优先级)
查看>>
前端网页学习9(css盒子)
查看>>
python学习8(列表)
查看>>
JavaScript学习(new1)
查看>>
http GET 和 POST 请求的优缺点、区别以及误区
查看>>
JVM的4种垃圾回收算法、垃圾回收机制
查看>>
什么是分布式事务
查看>>
常用的分布式事务解决方案
查看>>
设计模式:单例模式 (关于饿汉式和懒汉式)
查看>>
一致性Hash算法
查看>>
更新Navicat Premium 后打开数据库出现1146 - Table 'performance_schema.session_variables' doesn't exist
查看>>
安装rabbitmq时踩的坑
查看>>
Eclipse如何设置自动提示?
查看>>
2021-06-09数据库添加多条数据
查看>>
简单的JAVA小作品
查看>>
一些方便的遍历方法
查看>>
CMake下载
查看>>
未调用fflush产生的图片文件无法打开问题
查看>>