2012-12-01 66 views
5

當我從Oozie的OD CDH運行蜂巢腳本4.1.1蜂巢行動Oozie的失敗(在Cloudera的CDH 4.1.1)

運行失敗:

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只顯示一個神祕的提示:JA018是輸出目錄在工作流map-reduce動作中存在錯誤。

我複製我的HIV-的site.xml到HDFS並在workflow.xml設置: oozie.hive.defaults /用戶/色調/ Oozie的/工作區/ 霸王 -oozie-1 /蜂房-site.xml中

下面是完整的workflow.xml:

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

如何能得到這個工作?

+0

您應該檢查產生的作業(job_201211281608_0112)單個映射任務日誌以查看實際錯誤。在黑暗中拍攝:您是否正確設置了Oozie sharelib? –

回答

1

類別org/apache/hadoop/hive/cli/CliDriver是執行Hive操作所必需的。從錯誤消息中可以看出這很明顯。這個類在這個jar文件中:hive-cli-0.7.1-cdh3u5.jar。 (在我的情況下,在我的cloudera版本中爲cdh3u5)。

Oozie檢查ShareLib目錄中的這個罐子。該目錄的位置通常在hive-site.xml中配置,屬性名稱爲oozie.service.WorkflowAppService.system.libpath,所以Oozie應該很容易找到該jar。

但在我的情況下,hive-site.xml不包括此屬性,所以Oozie不知道在哪裏尋找這個罐子,因此java.lang.NoClassDefFoundError

爲了解決這個問題,我不得不在我的job.properties文件中包含一個參數,以便指向ShareLib目錄的位置,如下所示: oozie.libpath=${nameNode}/user/oozie/share/lib。 (取決於您的集羣中配置了SharedLib目錄的位置)。