用于运行MapReduce作业的Hadoop命令

时间:2014-10-28 16:48:52

标签: hadoop mapreduce

我有一个叫做WordCountMain.jar的jar。我想在多模集群中使用hadoop命令运行这个jar。

但我的用户ID被标记为队列名称为" omega"。所以,如果我使用下面的命令运行上面的jar,那么我收到一个错误,表明我的id没有submit_job访问权。

hadoop jar WordCountMain.jar /user/cloudera/inputs/words.txt /user/cloudera/output

因此上述命令在多模集群中不起作用,但它适用于单节点CDH3集群

所以,我的问题是如何在运行上面的jar时包含队列名称。

Configuration conf = new Configuration();

    Job job = new Job(conf,"word count");

    job.setJarByClass(WordCountCombinerMain.class);

    Path inputFilePath = new Path(args[0]);
    Path outputFilePath = new Path(args[1]);

    FileInputFormat.addInputPath(job, inputFilePath);
    FileOutputFormat.setOutputPath(job, outputFilePath);

    job.setInputFormatClass(TextInputFormat.class);
    job.setOutputFormatClass(TextOutputFormat.class);

    job.setMapperClass(CWordCountMapper.class);
    job.setCombinerClass(CWordCountCombiner1.class);
    job.setReducerClass(CWordCountCombiner1.class);
    //job.setReducerClass(CwordCountReducer.class);

    job.setMapOutputKeyClass(Text.class);
    job.setMapOutputValueClass(IntWritable.class);

    job.setOutputKeyClass(Text.class);
    job.setOutputValueClass(IntWritable.class);

    job.waitForCompletion(true);
    job.submit();

请为我提供在驱动程序类中添加队列名称的方法名称。

2 个答案:

答案 0 :(得分:0)

您能否添加一个例外代码段?

或许尝试设置hadoop用户名将解决问题。

e.g。

export HADOOP_USER_NAME=your_hadoop_username

PS:我无法评论,因此我添加了答案说明!

答案 1 :(得分:0)

您没有提供班级名称

hadoop jar WordCountMain.jar **className**  /user/cloudera/inputs/words.txt /user/cloudera/output

**hadoop jar /usr/joe/wordcount.jar org.myorg.WordCount /usr/joe/wordcount/input /usr/joe/wordcount/output**