2014-10-28 4 views
0

У меня есть банка под названием WordCountMain.jar. Я хотел бы запустить эту банку, используя команду hadoop в многомодовом кластере.Команда Hadoop для запуска MapReduce Job

, но мой идентификатор пользователя помечен как имя очереди как «омега». поэтому, если я запустил вышеупомянутую банку, используя следующую команду, тогда я получаю сообщение об ошибке, указывающее, что у моего 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(); 

Pls дает мне имя метода для добавления имени очереди в класс драйвера.

ответ

0

Не могли бы вы добавить фрагмент исключения?

возможно, попробуйте установить имя пользователя hadoop, чтобы решить проблему.

например.

export HADOOP_USER_NAME=your_hadoop_username 

PS: Я не мог комментировать, поэтому я добавил в качестве ответной заметки!

+0

Я хотел бы знать, как установить имя очереди в классе конфигурации MapReduce. –

+0

Я попытался установить имя очереди, используя приведенные ниже строки, и это сработало. Но как установить имя очереди с помощью нового APIJobConf conf1 = new JobConf(); \t \t \t conf1.setQueueName ("omega"); \t \t Job job = new Job (conf1, "count count"); –

+0

Попробуйте установить его в коде: job.getConfiguration(). Set ("mapreduce.job.queuename", "omega"); Или во время выполнения: -Dmapreduce.job.queuename = omega – RajK

0

Вы didnot дать Classname

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** 
Смежные вопросы