“reducer与reduce任务不同。reducer可以运行多个reduce任务”。有人可以用下面的例子来解释这个吗?
foo.txt:很好,这是foo文件 bar.txt:这是条形文件
我正在使用2个减速器。什么是减少任务并基于减速器中生成的多个减少任务?
答案 0 :(得分:3)
Reducer 是一个类,其中包含 reduce 函数,如下所示
protected void reduce(KEYIN key, Iterable<VALUEIN> values, Context context
) throws IOException, InterruptedException {
减少任务 是在节点上运行的程序,该节点正在执行 Reducer 类的 reduce 功能。< / p>
您可以将 减少任务 视为 Reducer
的实例查看Apache MapReduce教程页面了解更多详情( Payload 部分)。
答案 1 :(得分:2)
根据我的理解,Reducer是计算资源的一个插槽,可用于完成reduce任务。可以将reducer分配给任务,该任务执行完成/失败,并且一旦任务到达最终状态,就可以处理另一个reduce任务,清理后。
在纱线中,概念虽然有点不同。
答案 2 :(得分:2)
reducer是您正在编写(或重用)处理数据的代码。
reduce任务是在群集中的节点上运行的reducer代码的实际实例化。此任务具有状态机,可能会失败。如果发生故障,则会启动另一个reduce任务以重新启动计算。这称为reduce task attempts 。重新开始计算的次数有限(&#34;最大尝试次数&#34;)。
您可以配置n
reducers(如reduce任务中),这是在作业执行的任何时间点可能发生的最大并行reduce任务量(预留推测执行)。