2015-07-31 5 views
1

Я пытаюсь запустить программу wordcount через работу oozie.
Когда я запускаю баннер wordcout вручную, как hadoop jar wordcoutjar /data.txt /out. Он отлично работает и дает мне выход.
Ниже приведена информация о картографическом коде моей программы wordcount.Ошибка выполнения задания Oozie из-за «не org.apache.hadoop.mapred.Mapper» во время пробега

public class MapperWordcount extends Mapper<LongWritable, Text, Text, IntWritable>{ 
     private final static IntWritable one = new IntWritable(1); 
     private Text word = new Text(); 

     public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { 
      String line = value.toString(); 
      StringTokenizer tokenizer = new StringTokenizer(line); 
      while (tokenizer.hasMoreTokens()) { 
       word.set(tokenizer.nextToken()); 
       context.write(word, one); 
      } 
     } 

    } 

Когда я исполню ее через oozie работу, ошибка, как показано ниже:

2015-07-31 00:39:23,357 FATAL [IPC Server handler 29 on 40854] org.apache.hadoop.mapred.TaskAttemptListenerImpl: Task: attempt_1438294006985_0011_m_000000_3 - exited : java.lang.RuntimeException: Error in configuring object 
      at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:109) 
      at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:75) 
      at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:133) 
      at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:446) 
      at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343) 
      at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163) 
      at java.security.AccessController.doPrivileged(Native Method) 
      at javax.security.auth.Subject.doAs(Subject.java:415) 
      at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628) 
      at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158) 
    Caused by: java.lang.reflect.InvocationTargetException 
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
      at java.lang.reflect.Method.invoke(Method.java:606) 
      at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:106) 
      ... 9 more 
    Caused by: java.lang.RuntimeException: java.lang.RuntimeException: class com.mr.wc.MapperWordcount not org.apache.hadoop.mapred.Mapper 
      at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2108) 
      at org.apache.hadoop.mapred.JobConf.getMapperClass(JobConf.java:1109) 
      at org.apache.hadoop.mapred.MapRunner.configure(MapRunner.java:38) 
      ... 14 more 
    Caused by: java.lang.RuntimeException: **class com.mr.wc.MapperWordcount not org.apache.hadoop.mapred.Mapper** 
      at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2102) 
      ... 16 more 

Мой pom.xml, как это.

<dependency> 
     <groupId>org.apache.hadoop</groupId> 
     <artifactId>hadoop-client</artifactId> 
     <version>2.6.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.hadoop</groupId> 
     <artifactId>hadoop-hdfs</artifactId> 
     <version>2.6.0</version> 
</dependency> 
    <dependency> 
     <groupId>org.apache.hadoop</groupId> 
     <artifactId>hadoop-mapreduce-client-core</artifactId> 
     <version>2.6.0</version> 
+0

Возможно, похоже на http://stackoverflow.com/questions/22863419/executing-mapreduce-job-using-oozie-workflow-in-hue-giving-wrong-output – Romain

ответ

0

У меня такая же проблема здесь актуальна проблема была код со ссылкой на старую карту сократить библиотеки в то время как во время выполнения он пытается найти новую карту уменьшить librarires.

В Gradle

compile("org.apache.hadoop:hadoop-core:2.4.0") 

и в вашем pom.xml

<dependency> 
     <groupId>org.apache.hadoop</groupId> 
     <artifactId>hadoop-core</artifactId> 
     <version>2.4.0</version> 
    </dependency> 

и изменить все ссылки на Mapper и редуктора от org.apache.hadoop.mapred.Mapper до org.apache. hadoop.mapreduce.Mapper