2013-08-22 2 views
2

Я пытаюсь запустить действие улья через Оози. Мой workflow.xml выглядит следующим образом:Ошибка во время работы Hive Action в Oozie

<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'/> 

А вот мой job.properties файл:

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 

Когда я запускаю этот рабочий процесс, я в конечном итоге с этой ошибкой:

ACTION[[email protected]] 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

Я не уверен, что означает эта ошибка. Где я иду не так?

EDIT

This link говорит код ошибки JA018 является: JA018 is output directory exists error in workflow map-reduce action. Но в моем случае выходной каталог не существует. Это делает его еще более запутанным

ответ

5

Я понял, что случилось Неправильно!

Класс org/apache/hadoop/hive/cli/CliDriver необходим для выполнения действия на улей. Это очень очевидно из сообщения об ошибке. Этот класс находится в этом файле jar: hive-cli-0.7.1-cdh3u5.jar. (В моем случае cdh3u5 в моей версии cloudera).

Oozie проверяет эту банку в каталоге ShareLib. Расположение этого каталога обычно настраивается в hive-site.xml, с именем свойства oozie.service.WorkflowAppService.system.libpath, поэтому Oozie должен легко найти банку.

Но в моем случае hive-site.xml не включили это свойство, поэтому Оози не знал, где искать эту банку, отсюда java.lang.NoClassDefFoundError.

Чтобы решить эту проблему, я должен был включать параметр в моем job.properties файл, чтобы указать oozie к местоположению каталога ShareLib следующим образом: oozie.libpath=${nameNode}/user/oozie/share/lib. (зависит от того, где в вашем кластере настроен каталог SharedLib).

Это избавило от этой ошибки!

Смежные вопросы