2014-10-28 81 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** 
相關問題