針對 Azure HDInsight 中的 Apache Oozie 進行疑難排解

您可透過 Oozie UI 檢視 Oozie 記錄。 Oozie UI 也包含工作流程所啟動之 MapReduce 工作的 JobTracker 記錄連結。 疑難排解的模式應該是:

  1. 在 Oozie Web UI 中檢視作業。

  2. 若發生錯誤或特定動作失敗,請選取該動作,以查看 [錯誤訊息] 欄位是否提供失敗的詳細資訊。

  3. 如果有提供,請使用動作的 URL 以檢視動作的更多詳細資料,例如 JobTracker 記錄。

以下是您可能會遇到的特定錯誤,以及解決這些問題的方法。

JA009:無法初始化叢集

問題

作業狀態會變更為 SUSPENDED。 作業的詳細資料會將 RunHiveScript 狀態顯示為 START_MANUAL。 選取該動作會顯示下列錯誤訊息:

JA009: Cannot initialize Cluster. Please check your configuration for map

原因

job.xml 檔案中使用的 Azure Blob 儲存體位址未包含儲存體容器或儲存體帳戶名稱。 Blob 儲存體位址的格式必須是 wasbs://containername@storageaccountname.blob.core.windows.net

解決方法

變更作業所使用的 Blob 儲存體位址。


JA002:不允許 Oozie 模擬 <USER>

問題

作業狀態會變更為 SUSPENDED。 作業的詳細資料會將 RunHiveScript 狀態顯示為 START_MANUAL。 如果您選取該動作,它將會顯示下列錯誤訊息:

JA002: User: oozie is not allowed to impersonate <USER>

原因

目前的權限設定不允許 Oozie 模擬指定的使用者帳戶。

解決方法

Oozie 可模擬 users 群組中的使用者。 使用 groups USERNAME 查看使用者帳戶所屬的群組。 若使用者不是 users 群組的成員,請使用以下命令將使用者新增至群組:

sudo adduser USERNAME users

注意

這可能需要幾分鐘,HDInsight 才能辨識出使用者已新增至該群組。


啟動器錯誤 (Sqoop)

問題

作業狀態會變更為 KILLED。 作業的詳細資料會將 RunSqoopExport 狀態顯示為 ERROR。 如果您選取該動作,它將會顯示下列錯誤訊息:

Launcher ERROR, reason: Main class [org.apache.oozie.action.hadoop.SqoopMain], exit code [1]

原因

Sqoop 無法載入存取資料庫時所需的資料庫驅動程式。

解決方法

當您從 Oozie 作業使用 Sqoop 時,您必須將資料庫驅動程式與作業所使用的其他資源 (例如 workflow.xml) 包含在一起。 此外,請從 workflow.xml 的 <sqoop>...</sqoop> 區段,參考含有資料庫驅動程式的封存。

例如,針對使用 Hadoop Oozie 工作流程的作業範例,您會使用下列步驟:

  1. mssql-jdbc-7.0.0.jre8.jar 檔案複製到 /tutorials/useoozie 目錄中:

    hdfs dfs -put /usr/share/java/sqljdbc_7.0/enu/mssql-jdbc-7.0.0.jre8.jar /tutorials/useoozie/mssql-jdbc-7.0.0.jre8.jar
    
  2. 修改 workflow.xml,在 </sqoop> 上方新的一行上新增下列 XML:

    <archive>mssql-jdbc-7.0.0.jre8.jar</archive>
    

下一步

如果您沒有看到您的問題,或無法解決您的問題,請瀏覽下列其中一個管道以取得更多支援:

  • 透過 Azure 社群支援獲得由 Azure 專家所提供的解答。

  • 連線至 @AzureSupport,這是用來改善客戶體驗的官方 Microsoft Azure 帳戶。 將 Azure 社群連線到正確的資源:解答、支援和專家。

  • 如果需要更多協助,您可在 Azure 入口網站提交支援要求。 從功能表列中選取 [支援] 或開啟 [說明 + 支援] 中樞。 如需詳細資訊,請參閱如何建立 Azure 支援要求。 Microsoft Azure 訂用帳戶包括訂用帳戶管理及帳務支援的存取權,而技術支援由其中一項 Azure 支援方案提供。