hadoop hive cloudera oozie

hadoop - acción de la colmena que falla en oozie(en cloudera CDH 4.1.1)



hive (1)

Cuando ejecuto un script de colmena con oozie od CDH 4.1.1

La ejecución falla 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 0000007-121128160850795-oozie-oozi-W@ExchangeRateTest Retries 0 TrackerUri overlord-datanode1:8021 Transition kill

La búsqueda en Google JA018 revela solo una pista críptica: JA018 es el directorio de salida que existe error en la acción de reducción de mapa de flujo de trabajo.

Copié mi hiv-site.xml a HDFS y lo configuré en workflow.xml: oozie.hive.defaults / user / hue / oozie / workspaces / overlord -oozie-1 / hive-site.xml

Aquí está el 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>

¿Cómo puede hacer que esto funcione?


La clase org/apache/hadoop/hive/cli/CliDriver es necesaria para la ejecución de una acción Hive. Esto es obvio a partir del mensaje de error. Esta clase se encuentra dentro de este archivo jar: hive-cli-0.7.1-cdh3u5.jar . (En mi caso cdh3u5 en mi versión de cloudera).

Oozie busca este jar en el directorio ShareLib . La ubicación de este directorio generalmente se configura en hive-site.xml , con el nombre de la propiedad como oozie.service.WorkflowAppService.system.libpath , por lo que Oozie debe encontrar el contenedor fácilmente.

Pero en mi caso, hive-site.xml no incluyó esta propiedad, por lo que Oozie no sabía dónde buscar este jar, de ahí el java.lang.NoClassDefFoundError .

Para resolver esto, tuve que incluir un parámetro en mi archivo job.properties para señalar oozie a la ubicación del directorio ShareLib , de la siguiente manera: oozie.libpath=${nameNode}/user/oozie/share/lib . (depende de dónde esté configurado el directorio de SharedLib en su clúster).