2015-10-13 104 views
0

我正在运行map reduce任务。无论文件的大小(70 MB,200 MB,2.5 GB)只运行一个映射器。块大小为128MB。hadoop mapreduce只执行一个映射器

任何人都可以帮助找出可能是什么原因?

注意

  1. 数据文件未压缩/ gzip文件,它是* .dat文件
  2. 这不是生产环境。用户是否是低优先级用户的可能性?参考号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; 
+0

你可以发布你正在得到的日志 – madhu

+0

什么是ValidatorInputFormat? –

+0

ValidatorInputFormat是一个简单的RecordReader实现 – Betta

回答

1

我的问题已经解决。基本上,我们实施了FileInputFormat其中我们已经重写isSplittable方法并使输入非可分离的,如下所示:

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

默认isSplittable方法被实现返回true;

+0

很好了解它 –

相关问题