用于运行MapReduce作业的Hadoop命令



我有一个名为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**

相关内容

  • 没有找到相关文章

最新更新