2014-10-28 67 views
0

我有一个名为WordCountMain.jar的jar。我想在多模式集群中使用hadoop命令运行此jar。用于运行MapReduce作业的Hadoop命令

但我的用户ID被标记为排队名称为“欧米茄”。所以如果我使用下面的命令运行上面的jar,那么我得到一个错误,表明我的id没有submit_job访问权限。

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

所以上面的命令没有多集群的作品,但它工作在单节点集群CDH3

所以,我的问题是我如何包括队列名,而在运行上面的罐子。

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

您能否添加一个异常片段?

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

例如

export HADOOP_USER_NAME=your_hadoop_username 

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

+0

我想知道如何设置配置类的MapReduce队列名称类名。 – 2014-10-29 08:02:35

+0

我尝试通过使用下面的行设置队列名称,它的工作..但我如何设置队列名称使用新的APIJobConf conf1 = new JobConf(); \t \t \t conf1.setQueueName(“omega”); \t \t Job job = new Job(conf1,“word count”); – 2014-10-29 09:28:45

+0

尝试在下面的代码中设置它: job.getConfiguration()。set(“mapreduce.job.queuename”,“omega”); 或者在执行时,像这样: -Dmapreduce.job.queuename = omega – RajK 2014-10-29 11:53:54

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**