2012-12-01 11 views
5

Quando eseguo uno script alveare con da oozie od CDH 4.1.1azione alveare non riuscendo a oozie (su Cloudera CDH 4.1.1)

La corsa non riesce con:

Error Code JA018 
Error Message org/apache/hadoop/hive/cli/CliDriver 

Details 
Property Value 
External Id job_201211281608_0112 
External Status FAILED/KILLED 
Data None 
Start time Sat, 01 Dec 2012 03:02:37 
End time  Sat, 01 Dec 2012 03:03:07 
Id [email protected] 
Retries 0 
TrackerUri overlord-datanode1:8021 
Transition kill 

Googling JA018 rivela solo una suggerimento criptico: JA018 è la directory di output esistente errore nell'azione di riduzione della mappa del flusso di lavoro.

ho copiato il mio hiv-site.xml per HDFS e impostare nel workflow.xml: oozie.hive.defaults/user/tonalità/oozie/aree di lavoro/Overlord -oozie-1/alveare-site.xml

Ecco la workflow.xml completo:

<workflow-app name="HiveTest" xmlns="uri:oozie:workflow:0.4"> 
    <start to="ExchangeRateTest"/> 
    <action name="ExchangeRateTest"> 
     <hive xmlns="uri:oozie:hive-action:0.2"> 
      <job-tracker>${jobTracker}</job-tracker> 
      <name-node>${nameNode}</name-node> 
      <prepare> 
       <delete path="${nameNode}${jobOutput}"/> 
      </prepare> 
      <configuration> 
       <property> 
        <name>oozie.use.system.libpath</name> 
        <value>true</value> 
       </property> 
       <property> 
        <name>oozie.hive.defaults</name> 
        <value>/user/hue/oozie/workspaces/_overlord_-oozie-1/hive-site.xml</value> 
       </property> 
      </configuration> 
      <script>/user/hue/oozie/workspaces/_overlord_-oozie-1/03_update_exchange_rates_final.hive</script> 
       <param>OUTPUT=${jobOutput}</param> 
     </hive> 
     <ok to="end"/> 
     <error to="kill"/> 
    </action> 
    <kill name="kill"> 
     <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message> 
    </kill> 
    <end name="end"/> 
</workflow-app> 

Come si può arrivare a questo lavoro?

+0

È necessario controllare i registri delle attività a mappa singola del lavoro (job_201211281608_0112) per gli errori effettivi. Riprese al buio qui: hai impostato correttamente il sharelib Oozie? –

risposta

1

La classe org/apache/hadoop/hive/cli/CliDriver è necessaria per l'esecuzione di un'azione alveare. Questo è evidente dal messaggio di errore. Questa classe si trova all'interno di questo file jar: hive-cli-0.7.1-cdh3u5.jar. (Nel mio caso cdh3u5 nella mia versione cloudera).

Oozie controlla questo jar nella directory ShareLib. La posizione di questa directory è solitamente configurata in hive-site.xml, con il nome della proprietà come oozie.service.WorkflowAppService.system.libpath, quindi Oozie dovrebbe trovare facilmente il barattolo.

Ma nel mio caso, hive-site.xml non includeva questa proprietà, quindi Oozie non sapeva dove cercare questo barattolo, da cui il java.lang.NoClassDefFoundError.

Per risolvere questo, ho dovuto includere un parametro nel mio file job.properties per puntare oozie alla posizione della directory ShareLib, come segue: oozie.libpath=${nameNode}/user/oozie/share/lib. (dipende da dove è stata configurata la directory SharedLib nel cluster).