【问题标题】:Difference between reduce task and a reducerreduce任务和reducer之间的区别
【发布时间】:2016-06-22 00:49:18
【问题描述】:

“reducer 与 reduce 任务不同。一个 reducer 可以运行多个 reduce 任务”。有人可以用下面的例子解释一下吗?

foo.txt:亲爱的,这是 foo 文件 bar.txt:这是条形文件

我正在使用 2 个减速器。什么是 reduce 任务,以及基于 reducer 中生成的多个 reduce 任务?

【问题讨论】:

    标签: hadoop mapreduce hadoop2 reducers bigdata


    【解决方案1】:

    据我了解,Reducer 是一个计算资源槽,可用于完成 reduce 任务。一个reducer可以分配给一个任务,它执行到完成/失败,一旦任务达到结束状态,它就可以用于处理另一个reduce任务,post-cleanup。

    在 Yarn 中,概念有点不同。

    【讨论】:

      【解决方案2】:

      reducer 是您正在编写(或重用)以处理传入数据的代码。

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

      您可以配置n reducers(如在reduce 任务中),这是在作业执行的任何时间点可能发生的并行reduce 任务的最大数量(抛开推测执行)。

      【讨论】:

      • 在回答中引用重试机制很有用
      • 你的意思是说每个reducer如果不失败就执行一个reduce任务,对吧!!对于我举的例子,第一个reduce任务将产生:bar 1 file 2 foo 1 is 2 第二个reduce任务将产生:sweet 1 the 2 this 2 请确认我是否正确
      【解决方案3】:

      Reducer是一个类,其中包含reduce函数如下

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

      Reduce任务是运行在节点上的程序,它正在执行Reducer类的reduce函数。

      您可以将 Reduce 任务 视为 Reducer 的一个实例

      查看 Apache MapReduce 教程页面了解更多详情(Payload 部分)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-27
        • 1970-01-01
        • 1970-01-01
        • 2011-03-16
        • 1970-01-01
        • 2015-05-08
        相关资源
        最近更新 更多