2016-08-04 23 views
1

阅读关于MapReduce的论文,并提到将所有中间键分组在一起。在MapReduce中,如何在多台机器上执行相同的reduce任务?

当减少工作人员已读取所有 中间数据时,它使所有的 出现相同的密钥的被组合在一起通过中间键进行排序。排序是 需要,因为通常很多不同的键映射到相同的减少 任务。如果中间数据量太大,无法在 存储器,外部排序是使用

有没有相同的reduce任务提到在多台机器被exectued。

当reduce任务完成时,reduce worker会自动将其临时输出文件重命名为最终输出文件。如果在多台机器上执行相同的减少 任务,则会为相同的最终输出文件执行多个重命名调用 。

如果将相同的键组合在一起,是不是会成为一个减少工作人员运行的减少任务?同一个reduce任务如何在多台机器上运行?

回答

1

。如果在多台机器上执行相同的reduce任务,则会为相同的最终输出文件执行多个重命名调用。

这可能是由于推测执行。

如果一个特定的Map或Reduce任务花费很长时间,Hadoop Framework会在不同的机器上启动相同的任务,推测长时间运行的任务存在一些问题。长时间运行任务的缓慢可能是由网络故障,繁忙的机器或硬件故障造成的。

你可以找到关于这个概念在这个SE问题的详细信息:

Hadoop speculative task execution

从Apache文档page @任务副作用文件:

可能有问题,有两个实例同一台Mapper或Reducer同时运行(例如,推测性任务)试图打开和/或写入FileSystem上的同一文件(路径)。因此,应用程序编写者将不得不为每个任务选择唯一的名称(使用尝试者,比如说attempt_200709221812_0001_m_000000_0),而不仅仅是每个任务。

为了避免这些问题的MapReduce框架,当OutputCommitter是FileOutputCommitter,保持通过${mapreduce.task.output.dir}对任务的地方,尝试的输出被存储在文件系统的每个任务尝试访问的特殊${mapreduce.output.fileoutputformat.outputdir}/_temporary/_${taskid}子目录。

1

我想你错了。这意味着如果单个reduce任务足够大,那么不是在单台机器上处理它,而是在多台机器上处理它,然后从机器输出文件被重命名,汇总并显示为单个输出文件。

多个reduce过程可以在同一个节点上发生。如果与其他节点相比,处理减少任务的速度足够快,则该节点的速度取决于该节点的速度,如果是,则再次使用另一个减少任务进行调用。

欲了解更多信息,请参阅 https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html 本文有话题“多少减少?”我认为这将解决您的查询。

我希望我能够解决您的查询。

+0

Same Reduce任务可以在多台机器上运行。 –

相关问题