我有一个叫做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();
请为我提供在驱动程序类中添加队列名称的方法名称。
答案 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**