【问题标题】:Is the Combiner logic always the same as the Reducer logic?Combiner 逻辑是否总是与 Reducer 逻辑相同?
【发布时间】:2015-11-23 10:07:08
【问题描述】:

Hadoop MapReduce 中的Combiner 逻辑是否始终与Reducer 逻辑相同?或者有没有Combiner逻辑可以不同于Reducer逻辑的场景?

【问题讨论】:

标签: java hadoop mapreduce


【解决方案1】:
  1. Combiner 类和 Reducer 类可能相同也可能不同,具体取决于您的要求。
  2. 但是Combiner和Reducer都必须通过扩展Reducer来实现reduce()方法

    例如

    public void reduce(Key key, Iterable<IntWritable> values,
                  Context context) throws IOException, InterruptedException {
    
  3. 如果Combiner 和Reducer 都不同,则将这些类设置如下

     job.setCombinerClass(YourCombiner.class);
     job.setReducerClass(YourReducer.class);
    

【讨论】:

    【解决方案2】:

    没有。您可以指定所需的任何组合器功能。我建议您阅读 Mahout in action book,在第 32 页您可能会找到一些相关信息。示例:

    public class MaxTemperatureWithCombiner {
    public static void main(String[] args) throws IOException {
    if (args.length != 2) {
    System.err.println("Usage: MaxTemperatureWithCombiner <input path> " +
    "<output path>");
    System.exit(-1);
    }
    JobConf conf = new JobConf(MaxTemperatureWithCombiner.class);
    conf.setJobName("Max temperature");
    FileInputFormat.addInputPath(conf, new Path(args[0]));
    FileOutputFormat.setOutputPath(conf, new Path(args[1]));
    conf.setMapperClass(MaxTemperatureMapper.class);
    conf.setCombinerClass(MaxTemperatureReducer.class);
    conf.setReducerClass(MaxTemperatureReducer.class);
    conf.setOutputKeyClass(Text.class);
    conf.setOutputValueClass(IntWritable.class);
    JobClient.runJob(conf);
    }
    }
    

    注意你调用了 conf.setCombinerClass(MaxTemperatureReducer.class); 所以你可以指定任何你想要的组合函数。通常 combiner 和 reducer 具有相同的逻辑,但并非总是如此。

    【讨论】:

      【解决方案3】:

      在大多数情况下,Combiner 逻辑与 reducer 逻辑相同。虽然我们也可能有与 reducer 不同的组合器逻辑。

      Combiner 必须与 reducer 具有相同的输入类型。

      Combiner 将合并每个地图输出的结果。由于这个原因,一些值在映射器阶段本身被组合,并且由于这种网络流量显着减少,因为需要从映射器遍历到减速器的值更少。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-01
        • 2019-06-27
        • 1970-01-01
        • 1970-01-01
        • 2023-04-07
        • 2021-02-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多