reduce任务和reducer之间的区别

c86crjj0  于 2021-06-02  发布在  Hadoop
关注(0)|答案(3)|浏览(709)

“reducer不同于reduce任务。一个reducer可以运行多个reduce任务。有人能用下面的例子来解释这一点吗?
这是foo文件bar.txt:这是bar文件
我用了两个减速机。什么是reduce任务?基于reducer中生成的多个reduce任务?

edqdpe6u

edqdpe6u1#

reducer是一个类,包含如下reduce函数

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

reduce任务是运行在一个节点上的程序,它执行reducer类的reduce函数。
您可以将reduce任务看作reducer的一个示例
查看apachemapreduce教程页面以获取更多详细信息(负载部分)。

wtlkbnrh

wtlkbnrh2#

根据我的理解,reducer是一个计算资源槽,可以用来完成reduce任务。一个reducer可以分配给一个任务,它执行到完成/失败,一旦任务达到结束状态,它就可以用于处理另一个reduce任务post cleanup。
在Yarn方面,概念有点不同。

cwxwcias

cwxwcias3#

reducer是您正在编写(或重用)以处理传入数据的代码。
reduce任务是在集群中的节点上运行的reducer代码的实际示例。此任务有状态机,可能会失败。在失败的情况下,另一个reduce任务将启动以重新开始计算。这称为减少任务尝试。重新开始计算的重试次数有限(“最大尝试次数”)。
您可以配置 n reducer(如reduce tasks中的reducer),它是在作业执行的任何时间点可能发生的并行reduce任务的最大数量(预留推测执行)。

相关问题