2016-03-08 103 views
3

“减速器不同于减少任务,减速器可以运行多个减少任务”。有人可以用下面的例子来解释吗?减少任务和减速器之间的区别

foo.txt的:甜,这是foo文件 跳回到bar.txt:这是条文件

,我使用2个减速。什么是减少任务,并基于减速器中生成多个减少任务的情况?

回答

3

减速器是一个类,其中包含减少功能如下

protected void reduce(KEYIN key, Iterable<VALUEIN> values, Context context 
         ) throws IOException, InterruptedException { 

减少任务是程序的节点,其被执行上运行减少功能减速机班。

你可以认为Reduce任务减速

的一个实例看一看更多细节(有效载荷节)的Apache MapReduce教程页面。

2

从我的理解中,Reducer是计算资源的一个插槽,可以用来完成减少任务。 Reducer可以被分配给一个任务,它执行完成/失败,一旦任务达到最终状态,它就可以处理另一个reduce任务,后期清理。

在纱线中,这些概念虽然有点不同。

2

减速器是你写(或重复使用)来处理数据的到来。

reduce任务的代码是在您的群集中的节点上运行的代码减速器的实际实例。这个任务有一个状态机,可能会失败。在发生故障的情况下,另一个减少任务即将启动以重新启动计算。这被称为减少任务尝试。重新启动计算的次数有限(“最大尝试次数”)。

您可以配置n reducer(与reduce任务相同),这是在作业执行的任何时间点(预留推测性执行)可能发生的并行reduce任务的最大数量。

+0

引用重试机制的答案是有用的 –

+0

你的意思是说,每个reducer的目的是执行一个减少任务,如果它没有失败,对! 对于我接过例如,第一次降低任务将产生: 条1个 文件2 富1 是2 而第二个reduce任务会产生: 甜1 这2 请确认如果我是对的 – Arighna