Hadoop mapreduce.job.reduces in Generic Option Syntax?



我正在尝试通过命令行设置要使用的化简器数量。似乎我使用了错误的语法。我正在使用 hadoop 2.5(纱线)MR2。

hadoop jar mrjobs-0.1.jar com.example.Weather -D mapreduce.job.reduces=2 datasets/inputs output

当我添加 -D 选项时,此命令不起作用,否则它工作正常。

任何帮助表示赞赏!

谢谢!

语法看起来很正确,我已经针对 2.5 YARN MR2 进行了测试,它的工作原理如下:

hadoop jar hadoop-mapreduce-examples.jar wordcount -Dmapreduce.job.reduces=5 input output

最有可能的问题可能是您的驱动程序类没有实现ToolRunner,它与GenericOptionsParser协调工作以解析通用命令行参数。

下面是如何在MapReduce Driver类中实现ToolRunner的示例:

// imports ignored
public class ExampleDriver extends Configured implements Tool {
    public int run(String[] args) throws Exception {
        if (args.length != 2) {
            System.err.println("Usage: ExampleDriver <in> <out>");
            System.exit(2);
        }
        Configuration conf = getConf();
        Job job = Job.getInstance(conf);
        job.setJobName("example driver");
        job.setJarByClass(ExampleDriver.class);
        job.setMapperClass(YourMapper.class);
        job.setReducerClass(YourReducer.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);
        FileInputFormat.addInputPath(job, new Path(args[0]));
        FileOutputFormat.setOutputPath(job, new Path(args[1]));
        int ret = job.waitForCompletion(true) ? 0 : 1;
        return ret;
    }
    public static void main(String[] args) throws Exception {
        int res = ToolRunner.run(new Configuration(), new ExampleDriver(), args);
        System.exit(res);
    }
}