我正在使用oozie的REST API來調用shell腳本操作。任何包含訪問或使用HDFS的腳本都會失敗。來自REST API的簡單oozie shell操作失敗
我用這個簡單的腳本
#!/bin/bash -e
hadoop fs -touchz aaa
測試當我運行Oozie的工作流程,從調用命令行這個腳本 - 爲「根」 - 它工作正常。當我從REST API調用它,它失敗,錯誤代碼JA018和錯誤消息:
Main class [org.apache.oozie.action.hadoop.ShellMain], exit code [1]
我確信,我的Oozie的資產設置正確(即job.properties和workflow.xml),因爲如果我換出「touch/tmp/aaa」(即一個linux touch命令)工作流程運行成功完成。
首先,我找不到JA018究竟是什麼的清晰文檔。
其次(主要是),我認爲我的錯誤的原因可能是權限。當腳本正常工作時(即使用linux touch命令 - 而不是HDFS touchz),我將作業屬性user.name作爲「root」傳遞給Oozie REST服務器。 Oozie REST服務器(作爲每個Cloudera配置的「oozie」運行)不會像傳遞給它的「user.name」那樣運行該作業(否則可能它會以「root」身份運行工作流程,並且它會工作)。有什麼辦法,我需要配置oozie ID能夠運行,因爲user.name我傳遞給它?我應該使用除root以外的ID嗎? (我正好使用root,因爲它擁有所有的權限。)
似乎這是其他人可能遇到的問題,但我在網絡上發現了什麼也沒有。有可能是一些標準的做法,我只是缺少。
我正在使用Cloudera 4.1.3。
感謝您的任何想法/建議。