Erreur lors de l'exécution de la Ruche d'Action dans Oozie
Je suis en train de lancer une ruche d'action par le biais de Oozie. Mon workflow.xml
est comme suit:
<workflow-app name='edu-apollogrp-dfe' xmlns="uri:oozie:workflow:0.1">
<start to="HiveEvent"/>
<action name="HiveEvent">
<hive xmlns="uri:oozie:hive-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>oozie.hive.defaults</name>
<value>${hiveConfigDefaultXml}</value>
</property>
</configuration>
<script>${hiveQuery}</script>
<param>OUTPUT=${StagingDir}</param>
</hive>
<ok to="end"/>
<error to="end"/>
</action>
<kill name='kill'>
<message>Hive failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name='end'/>
Et voici mon travail.fichier de propriétés:
oozie.wf.application.path=${nameNode}/user/${user.name}/hiveQuery
oozie.libpath=${nameNode}/user/${user.name}/hiveQuery/lib
queueName=interactive
#QA
nameNode=hdfs://hdfs.bravo.hadoop.apollogrp.edu
jobTracker=mapred.bravo.hadoop.apollogrp.edu:8021
# Hive
hiveConfigDefaultXml=/etc/hive/conf/hive-default.xml
hiveQuery=hiveQuery.hql
StagingDir=${nameNode}/user/${user.name}/hiveQuery/Output
Lorsque j'exécute ce flux de travail, je me retrouve avec cette erreur:
ACTION[0126944-130726213131121-oozie-oozi-W@HiveEvent] Launcher exception: org/apache/hadoop/hive/cli/CliDriver
java.lang.NoClassDefFoundError: org/apache/hadoop/hive/cli/CliDriver
Error Code: JA018
Error Message: org/apache/hadoop/hive/cli/CliDriver
Je ne suis pas sûr de ce que cette erreur signifie. Où vais-je tort?
MODIFIER
Ce lien dit code d'erreur JA018
est: JA018 is output directory exists error in workflow map-reduce action
. Mais dans mon cas, le répertoire de sortie n'existe pas. Ce qui rend d'autant plus déroutant
Vous devez vous connecter pour publier un commentaire.
J'ai compris ce qui n'allait pas!
La classe
org/apache/hadoop/hive/cli/CliDriver
est requis pour l'exécution d'une Ruche à l'Action. Ce qui est évident à partir du message d'erreur. Cette classe est dans ce fichier jar:hive-cli-0.7.1-cdh3u5.jar
. (Dans mon cas cdh3u5 dans mon cloudera version).Oozie vérifie pour ce pot dans le
ShareLib
répertoire. L'emplacement de ce répertoire est généralement configuré enhive-site.xml
, avec le nom de la propriété en tant queoozie.service.WorkflowAppService.system.libpath
, donc Oozie doit trouver le pot facilement.Mais dans mon cas,
hive-site.xml
ne comprend pas cette propriété, Oozie ne savais pas où chercher pour ce pot, d'où lejava.lang.NoClassDefFoundError
.Pour résoudre ce problème, j'ai dû inclure un paramètre dans mon travail.fichier de propriétés à point oozie à l'emplacement de la
ShareLib
répertoire, comme suit:oozie.libpath=${nameNode}/user/oozie/share/lib
. (dépend de l'endroit oùSharedLib
directory est configuré sur votre cluster).Cela se débarrasser de l'erreur!