Mapreduce队列设置

时间:2014-12-04 09:18:29

标签: 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.getConfiguration().set("mapreduce.job.queuename","omega");

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();

但我得到以下错误。这个错误说我的mapreduce作业是在默认队列中提交的。有人可以帮我解决这个问题吗

ERROR ipc.RPC: FailoverProxy: Failing this Call: submitJob for error(RemoteException):       org.apache.hadoop.ipc.RemoteException: org.apache.hadoop.security.AccessControlException: User mytra cannot perform operation SUBMIT_JOB on queue default

2 个答案:

答案 0 :(得分:0)

尝试驱动程序类中的可能解决方案

  • 解决方案1:configuration.set("mapred.job.queue.name", "omega");

  • 解决方案2:

    String queueName= "omega";
    job.getConfiguration().set("mapreduce.job.queuename", queueName);
    

答案 1 :(得分:0)

你可以使用 -Dmapred.job.queue.name=yourpoolname-Dmapreduce.job.queuename=yourpoolname 作为将作业提交到不同队列的参数。

请注意,mapred.job.queue.name 是已弃用的属性名称,Hadoop 2.4.1 之后的新名称是 mapreduce.job.queuename

相关问题