Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop MapReduce框架如何在map完成之前确定运行reduce?_Hadoop_Mapreduce - Fatal编程技术网

Hadoop MapReduce框架如何在map完成之前确定运行reduce?

Hadoop MapReduce框架如何在map完成之前确定运行reduce?,hadoop,mapreduce,Hadoop,Mapreduce,我注意到,通常当hadoop集群不忙时,在map端完成之前,reduce端就开始工作了?这怎么可能?我记得在某个地方读到过一篇文章,说“减少进度指标”有点误导人,但我记不清了。有人能解释一下吗 这是因为reducer必须将映射输出复制到reduce任务运行的节点。如果映射任务已完成并提交其输出,则可以直接传输该任务并将其合并到reducer中已有的数据中 因此,这将为您节省大量时间,而不是等待所有映射程序完成。这是因为reducer必须将映射输出复制到reduce任务运行的节点。如果映射任务已完

我注意到,通常当hadoop集群不忙时,在map端完成之前,reduce端就开始工作了?这怎么可能?我记得在某个地方读到过一篇文章,说“减少进度指标”有点误导人,但我记不清了。有人能解释一下吗

这是因为reducer必须将映射输出复制到reduce任务运行的节点。如果映射任务已完成并提交其输出,则可以直接传输该任务并将其合并到reducer中已有的数据中


因此,这将为您节省大量时间,而不是等待所有映射程序完成。

这是因为reducer必须将映射输出复制到reduce任务运行的节点。如果映射任务已完成并提交其输出,则可以直接传输该任务并将其合并到reducer中已有的数据中


因此,这将为您节省大量时间,而不是等待所有映射程序完成。

33任何reduce任务进度指示器中的1/3%是复制映射输出。(另外33.1/3%在对它们进行排序,最后33.1/3%构成了对reduce()方法的实际调用。)映射程序一直都在完成,并且您配置的reduce任务中有尽可能多的任务在它们准备好后立即提取这些输出,因此在任何reduce()之前,reduce阶段的第一轮将完成多达2/3调用发生。

33 1/3%的reduce任务进度指示器正在复制map输出。(另外33.1/3%在对它们进行排序,最后33.1/3%构成了对reduce()方法的实际调用。)映射程序一直都在完成,并且您配置的reduce任务中有尽可能多的任务在它们准备好后立即提取这些输出,因此在任何reduce()之前,reduce阶段的第一轮将完成多达2/3调用会发生。

除了已经给出的答案之外,此行为还受mapred属性mapred.reduce.slowstart.completed.maps的控制,该属性表示在复制阶段开始之前必须完成的映射任务的百分比(0-1)。

除了已经给出的答案之外,此行为由mapred属性
mapred.reduce.slowstart.completed.maps
控制,该属性表示在复制阶段开始之前必须完成的映射任务的百分比(0-1)。

感谢您提供的信息。我也对此感到困惑。顺便问一下,有人能推荐这方面的文档吗?我一直在寻找,运气不好。谢谢你的信息。我也对此感到困惑。顺便问一下,有人能推荐这方面的文档吗?我一直在寻找,运气不太好。