我在探索Oozie管理Hadoop工作流的功能。我試圖設置一個調用一些配置單元命令的shell動作。我的shell腳本hive.sh如下所示:Oozie shell腳本動作
#!/bin/bash
hive -f hivescript
其中hive腳本(已獨立測試)創建一些表格等等。我的問題是在何處保留hivescript,然後如何從shell腳本中引用它。
我已經試過兩種方式,一是使用本地路徑,如hive -f /local/path/to/file
,並使用相對路徑像上面,hive -f hivescript
,在這種情況下,我把我的hivescript在Oozie的應用程序路徑目錄(同hive.sh和workflow.xml)並將其設置爲通過workflow.xml轉到分佈式緩存。
使用這兩種方法,我在oozie Web控制檯上收到錯誤消息: "Main class [org.apache.oozie.action.hadoop.ShellMain], exit code [1]"
。另外我已經嘗試在shell腳本中使用hdfs路徑,並且據我所知這不起作用。
我job.properties文件:
nameNode=hdfs://sandbox:8020
jobTracker=hdfs://sandbox:50300
queueName=default
oozie.libpath=${nameNode}/user/oozie/share/lib
oozie.use.system.libpath=true
oozieProjectRoot=${nameNode}/user/sandbox/poc1
appPath=${oozieProjectRoot}/testwf
oozie.wf.application.path=${appPath}
而且workflow.xml:
<shell xmlns="uri:oozie:shell-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
</configuration>
<exec>${appPath}/hive.sh</exec>
<file>${appPath}/hive.sh</file>
<file>${appPath}/hive_pill</file>
</shell>
<ok to="end"/>
<error to="end"/>
</action>
<end name="end"/>
我的目標爲了使用oozie通過shell腳本調用配置單元腳本,請給出您的建議。
您是否檢查了啓動的oozie作業的mapreduce日誌?它是否提供更多細節? –
另外,請詳細說明'另外我已經嘗試在shell腳本中使用hdfs路徑,並且這種方式並不像我所知道的那樣工作。 –