5分钟 Hadoop Shuffle 优化.doc


立即下载 布偶的表弟派大星丶
2024-04-25
Shuffle reduce 阶段 function ke key Hadoop 优化 map pair
499 KB

上篇5分钟深入 Hadoop 的文章中,我们介绍了如何优化输入处理,让 Hadoop 达到更高的性能;另一个有可能让 Hadoop 性能实现质的飞越的过程是 Shuffle 阶段:Shuffle 阶段负责把 map output 传递到 reduce 阶段,深入理解这个阶段有助于我们回答面试中很多进阶问题,从而 really impress the interviewer. 本文就来详细讨论 Hadoop 中的 Shuffle 优化。
Shuffle 是什么?
讨论如何优化 Shuffle 之前,我们先来介绍 Shuffle 阶段具体发生了什么,从而对优化有个深入的理解。
Shuffle 阶段需要做哪些事情,完成哪些需求?
大家还记得 <5分钟搞懂 Hadoop> 那篇文章中举的例子吗?
我们从这个例子的图中可以看出,每个 map function 会输出一组 key value pair, Shuffle 阶段需要从所有 map host 上把相同的 key 的 key value pair 组合在一起,组合后传给 reduce host, 作为输入进入 reduce function 里。
那 Shuffle 阶段是如何完成这些功能的呢?
首先介绍新 Component:partitioner
所有 map function 产生的 key 可能有成百上千,经过 Shuffle 组合 key 的工作之后,依然是相同数目,而负责 reduce 工作的 host 可能只有几十个,几百个,那 Hadoop 的分配 key value pair 的策略是什么?
Partitioner component 负责计算哪些 key 应当被放到同一个 reduce 里。
举个栗子
使用默认的 partitioner: HashPartitioner,它会把 key 放进一个 hash function 里,然后得到结果。如果两个 key 的 hashed result 一样,他们的 key value pairs 就被放到同一个 reduce function 里。我们也把分配到同一个 reduce function 里的 key value pairs 叫做一个reduce partition.
我们看到 hash function 最终产生多少不同的


Shuffle/reduce/阶段/function/ke/key/Hadoop/优化/map/pair/ Shuffle/reduce/阶段/function/ke/key/Hadoop/优化/map/pair/
-1 条回复
登录 后才能参与评论
-->