首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Oozie Shell Action 執行 Hive 導致 MR 跑在 Local 模式的解決方案

     編輯:程式設計綜合問答

問題現象

在 Oozie 工作流中使用 Shell Action 呼叫 hive -e "$hql",發現產生的 MapReduce 作業皆以 Local 模式執行,未提交至 YARN 叢集,導致效能極差。

根本原因

Shell Action 啟動的子程序未繼承正確的 Hadoop 環境變數,特別是 HADOOP_CONF_DIR,導致 Hive 客戶端無法定位叢集設定,退回本地模式。

解決方法

在 Shell 腳本或 Oozie <env-var> 中設定環境變數:

export HADOOP_CONF_DIR=$HADOOP_CONF_DIR:/etc/hive/conf

確保包含 Hive 設定目錄(通常為 /etc/hive/conf),使 Hive 能正確讀取 hive-site.xml 並連接遠端 Metastore 與 YARN。

驗證步驟

  1. 在 Shell Action 中加入 echo $HADOOP_CONF_DIR 確認變數傳遞。
  2. 檢查 YARN UI 是否出現對應的 Application ID。
  3. 觀察作業執行時間是否符合分散式預期。

補充建議

若問題持續,請檢查 Oozie 共享庫是否包含正確的 Hive/JDBC 驅動,並確認 hive-site.xml 中的 hive.execution.engine 設為 mr 或 tez。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved