Hadoop Reducer 执行重现

标签 hadoop mapreduce reduce

所以映射器只在包含给定数据 block 的给定从节点上执行一次,对吗?

但是 Reducer 可能会执行多次,因为同一个键可能来自许多 Mapper 节点,对吗?

此外,对于单个 MapReduce 作业,每个 Mapper 都会进行 Shuffle 和 Sort 是否正确?

最佳答案

一般来说,我认为说Mapper/Reducer被执行了多少次是不合适的,因为它们广泛分布在不同的节点中,由MRv1中的JobTracker或MRv2中的ResourceManager调度。但希望我下面的回答可以帮助您更好地理解。

问:“所以映射器只在包含给定数据 block 的给定从节点上执行一次,对吗?”

答:在大多数情况下是正确的。通常,hadoop 会为每个输入拆分(默认情况下与数据 block 大小相同)启动一个映射器,但如果映射器失败,它会启动一个新的映射器。

问:“但是 Reducer 可能会执行多次,因为同一个键可能来自许多 Mapper 节点,对吗?”

答:不正确。 Shuffle 和 Sort 过程会将所有映射器输出合并到一个排序的输入中,并提供给 reducer。 reducer的个数由用户定义。

问题:“另外,对于单个 MapReduce 作业,每个 Mapper 上都会发生 Shuffle 和 Sort 是否正确?”

答:不准确。洗牌阶段是 hadoop 执行的过程,用于对映射器的输出进行排序并将其传输到缩减器作为输入。当所有映射器的输出都被复制后,排序阶段将合并所有输出并保持它们的排序顺序。所以从技术上讲,洗牌和排序的第一部分发生在每个映射器上。

谢谢

关于Hadoop Reducer 执行重现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21061699/

相关文章:

hadoop - 在减少阶段之后实现称为合并的第三阶段

hadoop - 如何从Mapreduce中的Excel文件读取?

javascript - 如何循环遍历对象的对象和对象数组,并根据匹配数组元素的计数更新嵌套对象值?

android - 将数组缩减为单个整数会导致类型错误

hadoop - 无法连接到 Cloudera Manager,未监听端口 7180

hadoop - 带有存档操作的 Oozie 工作流

apache-spark - 使用Spark运行SQL查询

hadoop - 使用 Mapreduce 计算期望最大化的高斯混合模型

java - 如何将参数传递给 Hadoop 中的主程序

Javascript - 简化为对象