我有一个名为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();
请给我在驱动程序类中添加队列名称的方法名称。
你能添加一个异常的片段吗?
也许可以尝试设置hadoop用户名来解决这个问题。
例如
export HADOOP_USER_NAME=your_hadoop_username
附言:我无法发表评论,所以我添加了答案注释!
您没有给出类名
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**