hadoop mapreduce 只执行一个mapper
hadoop mapreduce only one mapper is executed
我是运行ning map reduce 工作。无论文件大小(70 MB、200 MB、2.5 GB)只有一个映射器是 运行。区块大小为128MB。
谁能帮忙看看是什么原因??
备注
- 数据文件不是zip/gzip文件,是*.dat
- 这不是生产环境。用户是否有可能是低优先级用户?参考#11 https://cloudcelebrity.wordpress.com/2013/08/14/12-key-steps-to-keep-your-hadoop-cluster-running-strong-and-performing-optimum/
。
我提交作业的代码如下:
String configPath = arg[0];
String feedString = FileUtils.readFileToString(new File(configPath), StandardCharsets.UTF_8.name());
getConf().set(Constants.FEED_CONFIG_STRING, feedString);
getConf().set("mapred.reduce.tasks.speculative.execution", "false");
Job job = new Job(conf);
Feed feed = XMLFeedConfig.getFeed(feedString);
job.setJarByClass(DataValidationJob.class);
job.setJobName("Job " + feed.getName());
ValidatorInputFormat.setInputPaths(job, new Path(feed.getSrc_location()));
FileOutputFormat.setOutputPath(job, new Path(feed.getDest_location()));
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(Text.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
job.setMapperClass(ValidatorMapper.class);
job.setReducerClass(ValidatorReducer.class);
LazyOutputFormat.setOutputFormatClass(job, TextOutputFormat.class);
job.setNumReduceTasks(1);
job.setInputFormatClass(ValidatorInputFormat.class);
// job.setOutputFormatClass(TextOutputFormat.class);
return job.waitForCompletion(true) ? 0 : 1;
我的问题已经解决。基本上我们已经实现了 FileInputFormat,其中我们覆盖了 isSplittable 方法并使输入不可拆分,如下所示:
@Override
protected boolean isSplitable(JobContext context, Path filename) {
return false;
}
默认情况下 isSplittable 方法实现为 return true;
我是运行ning map reduce 工作。无论文件大小(70 MB、200 MB、2.5 GB)只有一个映射器是 运行。区块大小为128MB。
谁能帮忙看看是什么原因??
备注
- 数据文件不是zip/gzip文件,是*.dat
- 这不是生产环境。用户是否有可能是低优先级用户?参考#11 https://cloudcelebrity.wordpress.com/2013/08/14/12-key-steps-to-keep-your-hadoop-cluster-running-strong-and-performing-optimum/
。
我提交作业的代码如下:
String configPath = arg[0];
String feedString = FileUtils.readFileToString(new File(configPath), StandardCharsets.UTF_8.name());
getConf().set(Constants.FEED_CONFIG_STRING, feedString);
getConf().set("mapred.reduce.tasks.speculative.execution", "false");
Job job = new Job(conf);
Feed feed = XMLFeedConfig.getFeed(feedString);
job.setJarByClass(DataValidationJob.class);
job.setJobName("Job " + feed.getName());
ValidatorInputFormat.setInputPaths(job, new Path(feed.getSrc_location()));
FileOutputFormat.setOutputPath(job, new Path(feed.getDest_location()));
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(Text.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
job.setMapperClass(ValidatorMapper.class);
job.setReducerClass(ValidatorReducer.class);
LazyOutputFormat.setOutputFormatClass(job, TextOutputFormat.class);
job.setNumReduceTasks(1);
job.setInputFormatClass(ValidatorInputFormat.class);
// job.setOutputFormatClass(TextOutputFormat.class);
return job.waitForCompletion(true) ? 0 : 1;
我的问题已经解决。基本上我们已经实现了 FileInputFormat,其中我们覆盖了 isSplittable 方法并使输入不可拆分,如下所示:
@Override
protected boolean isSplitable(JobContext context, Path filename) {
return false;
}
默认情况下 isSplittable 方法实现为 return true;