hadoop mapreduce只执行一个Map器

z0qdvdin  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(587)

我正在运行map reduce作业。无论文件大小(70 mb、200 mb、2.5 gb),只运行一个Map器。块大小为128mb。
有人能帮忙找出原因吗??
笔记
数据文件不是zip/gzip文件,它是*.dat
这不是生产环境。用户是否可能是低优先级用户??参考#11https://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;
kq4fsx7k

kq4fsx7k1#

我的问题已经解决了。基本上,我们已经实现了fileinputformat,其中我们重写了issplittable方法,并使输入不可拆分,如下所示:

@Override
protected boolean isSplitable(JobContext context, Path filename) {
    return false;
}

默认情况下,实现issplittable方法以返回true;

相关问题