跳至內容

為什麼我的 Amazon EMR 叢集會因「application provisioning failed」錯誤而終止?

3 分的閱讀內容
0

我的 Amazon EMR 叢集因「application provisioning failed」錯誤而終止。

解決方法

當 Amazon EMR 在啟動 Amazon EMR 叢集時,無法安裝、設定或啟動指定的軟體,您可能會收到「application provisioning failed」錯誤。

檢閱 Amazon EMR 佈建日誌

Amazon EMR 會將佈建日誌儲存在您於啟動叢集時指定的 Amazon Simple Storage Service (Amazon S3) 儲存貯體中。

完成以下步驟:

  1. 開啟 Amazon EMR console (Amazon EMR 主控台)。
  2. 在導覽窗格中,選擇 Clusters (叢集)。然後,選擇失敗的 Amazon EMR 叢集以檢視叢集詳細資訊。
  3. Summary (摘要) 區段中,選擇 Terminated with errors (已終止並發生錯誤),並記下錯誤訊息中所包含的主要節點 ID。
  4. Cluster logs (叢集日誌) 區段中,選擇 Amazon S3 location (Amazon S3 位置) 網址。
  5. 依照以下路徑前往您的 UUID 資料夾:
    node/example-primary-node-ID/provision-node/apps-phase/0/example-UUID/
    **注意:**請將 example-primary-node-ID 替換為您的主要節點 ID。請將 example-UUID 替換為您的 UUID。
  6. 在產生的清單中,選取 puppet.log.gz,然後選擇 Open (開啟),在新的瀏覽器索引標籤中檢視佈建內容。

在佈建日誌中確認失敗原因

不支援的組態參數可能會造成錯誤。不正確的主機名稱、不正確的密碼,或一般作業系統問題也可能會造成錯誤。在日誌中搜尋相關關鍵字,包括「error」、「err」或「fail」。

連線至使用 Amazon RDS 執行個體的外部中繼存放區時發生問題

您可以設定某些 Amazon EMR 應用程式 (例如 Apache Hive、Hue 或 Apache Oozie),將資料儲存在外部資料庫 (例如 Amazon Relational Database Service (Amazon RDS)) 中。當您在連線至外部資料庫時遇到連線問題,您會收到錯誤訊息。

來自 Hive 的錯誤訊息範例:

2022-11-26 02:59:36 +0000 /Stage[main]/Hadoop_hive::Init_metastore_schema/Exec[init hive-metastore schema]/returns (notice): org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version.
2022-11-26 02:59:36 +0000 /Stage[main]/Hadoop_hive::Init_metastore_schema/Exec[init hive-metastore schema]/returns (notice): Underlying cause: java.sql.SQLNonTransientConnectionException : Could not connect to address=(host=hostname)(port=3306)(type=master) : Socket fail to connect to host:hostname, port:3306. hostname
2022-11-26 02:59:36 +0000 /Stage[main]/Hadoop_hive::Init_metastore_schema/Exec[init hive-metastore schema]/returns (notice): SQL Error code: -1

若要解決這種類型的錯誤,請採取以下動作:

  • 確認 Amazon RDS 執行個體的主機名稱、使用者、密碼及資料庫正確無誤。
  • 確認 Amazon RDS 執行個體的安全群組傳入規則允許來自 Amazon EMR 主要節點安全群組的連線。

連線至外部 KDC 時發生問題

Amazon EMR 可讓您設定外部 KDC 以新增額外的安全層。您也可以與 Active Directory 伺服器建立信任關係。若在聯絡 KDC 或嘗試加入網域時發生問題,您會收到錯誤訊息。

來自 Puppet 的錯誤訊息範例:

2022-11-26 03:02:01 +0000 Puppet (err): 'echo "${AD_DOMAIN_JOIN_PASSWORD}" | realm join -v -U "${AD_DOMAIN_JOIN_USER}"@"${CROSS_REALM_TRUST_REALM}" "${CROSS_REALM_TRUST_DOMAIN}"' returned 1 instead of one of [0]
2022-11-26 03:02:01 +0000 /Stage[main]/Kerberos::Ad_joiner/Exec[realm_join]/returns (err): change from 'notrun' to ['0'] failed: 'echo "${AD_DOMAIN_JOIN_PASSWORD}" | realm join -v -U "${AD_DOMAIN_JOIN_USER}"@"${CROSS_REALM_TRUST_REALM}" "${CROSS_REALM_TRUST_DOMAIN}"' returned 1 instead of one of [0]

若要解決這種類型的錯誤,請採取以下動作:

  • 檢查 Kerberos 領域的拼寫是否正確。
  • 檢查您是否正確輸入 KDC 管理密碼。
  • 檢查 Active Directory 加入使用者與密碼的拼寫是否正確。
  • 確認 Active Directory 中包含加入使用者,且該使用者具備正確的權限。
  • 若 KDC 與 Active Directory 託管於 Amazon Elastic Compute Cloud (Amazon EC2) 上,請確認 KDC 與 Active Directory 的安全群組傳入規則允許來自 Amazon EMR 主要節點安全群組的連線。
  • 若 KDC 與 Active Directory 託管於 Amazon EC2 之外,請確認 KDC 與 Active Directory 允許來自 Amazon EMR 叢集虛擬私有雲端 (VPC) 與子網路的連線。

啟動服務時發生的問題,例如 YARN ResourceManager、Hadoop NameNode 或 Spark History Server

Amazon EMR 可讓您在啟動 Amazon EMR 叢集時,為所有應用程式建立自訂組態。但這些組態有時會阻止服務的啟動程序。當服務因問題而無法啟動時,您會收到錯誤訊息。

來自 Apache Spark History Server 的錯誤訊息範例:

2022-11-26 03:34:13 +0000 Puppet (err): Systemd start for spark-history-server failed!journalctl log for spark-history-server:
-- Logs begin at Sat 2022-11-26 03:27:57 UTC, end at Sat 2022-11-26 03:34:13 UTC. --
Nov 26 03:34:10 ip-192-168-1-32 systemd[1]: Starting Spark history-server...
Nov 26 03:34:10 ip-192-168-1-32 spark-history-server[1076]: Starting Spark history-server (spark-history-server):[OK]
Nov 26 03:34:10 ip-192-168-1-32 su[1112]: (to spark) root on none
Nov 26 03:34:13 ip-192-168-1-32 systemd[1]: spark-history-server.service: control process exited, code=exited status=1
Nov 26 03:34:13 ip-192-168-1-32 systemd[1]: Failed to start Spark history-server.
Nov 26 03:34:13 ip-192-168-1-32 systemd[1]: Unit spark-history-server.service entered failed state.  
Nov 26 03:34:13 ip-192-168-1-32 systemd[1]: spark-history-server.service failed.
2022-11-26 03:34:13 +0000 /Stage[main]/Spark::History_server/Service[spark-history-server]/ensure (err): change from 'stopped' to 'running' failed: Systemd start for spark-history-server failed!
journalctl log for spark-history-server:

若要解決這種類型的錯誤,請採取以下動作:

  • 檢查是哪一個服務啟動失敗。
  • 檢閱您的組態設定是否有拼寫錯誤。
  • 在指定位置檢查 Amazon S3 日誌以找出失敗原因。例如,s3://example-log-location/example-cluster-ID/node/example-primary-node-ID/applications/example-failed-application/example-failed-service.gz.

下載或安裝應用程式時發生問題

當 Amazon EMR 無法安裝或下載應用程式時,Amazon EMR 叢集會失敗,且佈建日誌不會完成。請檢閱 stderr.gz 日誌以確認導致錯誤的原因。
錯誤訊息範例:

stderr.gzError Summary
-------------
Disk Requirements:
  At least 2176MB more space needed on the / filesystem.

2022-11-26 03:18:44,662 ERROR Program: Encountered a problem while provisioning
java.lang.RuntimeException: Amazon-linux-extras topics enabling or yum packages installation failed.

若要解決這種類型的錯誤,請在啟動 Amazon EMR 叢集時增加根 Amazon Elastic Block Store (Amazon EBS) 磁碟區。

Amazon S3 日誌無法使用

當 Amazon EMR 無法佈建應用程式,且 Amazon S3 中未產生任何日誌時,您就會收到錯誤訊息。網路錯誤可能導致 Amazon S3 記錄失敗。

若要解決這種類型的錯誤,請採取以下動作:

相關資訊

EMR 叢集佈建失敗

AWS 官方已更新 3 個月前