為什麼我的 Amazon EMR 叢集在「應用程式佈建失敗」錯誤的情況下終止?
我的 Amazon EMR 叢集在「應用程式佈建失敗」錯誤的情況下終止。這個錯誤是什麼意思,我要如何修正此錯誤?
解決方案
當 Amazon EMR 啟動 EMR 叢集時無法安裝、設定或啟動指定的軟體時,您會看到「應用程式佈建失敗」錯誤。以下各節會向您展示如何尋找和檢閱佈建日誌。各節也會向您展示不同類型的錯誤和可以採取的步驟,以解決這些錯誤。
檢閱儲存在 Amazon S3 中的 Amazon EMR 佈建日誌
Amazon EMR 佈建日誌儲存在叢集啟動時指定的 Amazon Simple Storage Service (Amazon S3) 儲存貯體中。日誌的儲存位置使用以下 Amazon S3 URI 語法:
s3://example-log-location/example-cluster-ID/node/example-primary-node-ID/provision-node/apps-phase/0/example-UUID/puppet.log.gz
**備註:**將 example-log-location、example-cluster-ID、example-primary-node-ID 和 example-UUID 替換為您系統的命名。
- 開啟 Amazon EMR 主控台。在導覽窗格中,選擇叢集。然後,選擇失敗的 EMR 叢集以查看叢集詳細資料。
- 在摘要區段中,選擇「因錯誤而終止」,並記下錯誤訊息中包含的主節點 ID。
- 在叢集日誌區段中,選擇要重新導向至 Amazon S3 主控台中叢集日誌的 Amazon S3 位置 URL。
- 按照以下路徑來導覽至您的 UUID 資料夾:node/example-primary-node-ID/provision-node/apps-phase/0/example-UUID/。
**備註:**將 example-primary-node-ID 和 example-UUID 替換為您系統的命名。 - 在產生的清單中,選取 puppet.log.gz 並選擇開啟以在新的瀏覽器標籤上查看佈建。
識別佈建日誌時失敗的原因
不支援的組態參數會導致錯誤。錯誤也可能是由錯誤的主機名稱,不正確的密碼或一般作業系統問題所造成。搜尋日誌中的相關關鍵字,包含「錯誤」或「失敗」。
以下是常見錯誤類型的清單:
- 使用 Amazon Relational Database Service (Amazon RDS) 執行個體連線至外部中繼存放區時發生問題。
- 連線至外部金鑰發佈中心 (KDC) 時發生問題。
- 啟動服務時發生問題,例如 YARN ResourceManager 和 Hadoop NameNode。
- 下載或安裝應用程式時發生問題。
- S3 日誌無法使用。
使用 Amazon RDS 執行個體連線至外部中繼存放區時發生問題
部分 Amazon EMR 應用程式 (例如 Hive、Hue 或 Oozie) 可以設定為將資料儲存在外部資料庫中,例如 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
若要解決此類型的錯誤:
- 確認 RDS 執行個體主機名稱、使用者、密碼和資料庫是否正確。
- 確認 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 加入使用者存在於 Active Directory 中,且具有正確的權限。
- 確認 KDC 和 Active Directory 伺服器位於 Amazon EC2 上。然後,確認 KDC 和 Active Directory 安全群組輸入規則允許來自 Amazon EMR 主節點安全群組的連線。
- 確認 KDC 和 Active Directory 不在 Amazon EC2 上。然後,確認 KDC 和 Active Directory 允許來自 EMR 叢集虛擬私有雲端 (VPC) 和子網路的連線。
啟動服務時發生問題,例如 YARN ResourceManager、Hadoop NameNode 或 Spark History Server
Amazon EMR 允許在 EMR 叢集啟動時對所有應用程式執行自訂組態。但是,有時這些組態會防止服務啟動。當防止服務啟動時發生問題,就會顯示訊息。
以下是來自 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:
若要解決此類型的錯誤:
- 確認無法啟動的服務。檢查提供的組態是否拼寫正確。
- 導覽到以下路徑以查看 S3 日誌來調查失敗原因:s3://example-log-location/example-cluster-ID/node/example-primary-node-ID/applications/example-failed-application/example-failed-service.gz。
**備註:**將 example-log-location、example-cluster-ID、example-primary-node-ID、example-failed-application 和 example-failed-service 替換為您系統的命名。
下載或安裝應用程式時發生問題
Amazon EMR 可以安裝許多應用程式。但是,有時當應用程式無法下載或安裝時會發生問題。這可能會導致 EMR 叢集失敗。發生此失敗時,佈建日誌不會完成。您必須改為檢閱 stderr.gz 日誌,才能找出由 yum 安裝失敗所造成的類似訊息。
以下是來自 stderr.gz 的範例錯誤訊息:
stderr.gz Error 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.
若要解決此類型的錯誤,請在 EMR 叢集啟動期間增加 Amazon Elastic Block Store (Amazon EBS) 根磁碟區。
S3 日誌無法使用
Amazon EMR 無法佈建應用程式,而且 Amazon S3 中沒有產生任何日誌。在這個案例中,很可能是網路錯誤導致 S3 記錄失敗。
若要解決此類型的錯誤:
- 確認在 EMR 叢集啟動期間已開啟記錄選項。如需詳細資訊,請參閱設定叢集記錄和偵錯。
- 使用自訂 AMI 時,請確認沒有防火牆規則會影響所需的 Amazon EMR 網路設定。如需詳細資訊,請參閱使用 Amazon EMR 管理的安全群組。
- 使用自訂 AMI 時,請檢查是否有任何失敗的主節點。開啟 Amazon EMR 主控台,然後在導覽窗格中選擇硬體以判斷叢集是否無法啟動任何主節點。
- 使用自訂 AMI 時,請確認您遵循最佳實務。如需詳細資訊,請參閱使用自訂 AMI。
相關資訊
相關內容
- 已提問 4 個月前lg...
- 已提問 6 個月前lg...
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 1 個月前
- AWS 官方已更新 2 個月前