如何在 Amazon EMR 解決「退出狀態:-100。診斷: 容器發佈在 *遺失* 節點上」錯誤?

1 分的閱讀內容
0

我的 Amazon EMR 作業失敗,並顯示如下錯誤訊息: ExecutorLostFailure(正在執行的其中一項任務導致執行程式 12 退出)原因: 標記為失敗的容器:主機:ip-xx-xxx-xx-xx 上的 container_1572839353552_0008_01_000002 退出狀態:-100。診斷: 容器發佈在 遺失 節點上

簡短說明

此錯誤通常發生在下列任一情況下:

  • 某個核心節點或任務節點因為磁碟空間使用率過高而終止。
  • 由於 CPU 使用率過高或可用記憶體不足,節點變得沒有回應。

本文著重於磁碟空間問題。

當某個核心節點或任務節點磁碟 (例如 /mnt 或 /mnt1) 上的磁碟使用量超過 90% 時,磁碟將被視為狀態不良。如果狀態良好的節點磁碟低於 25%,YARN ResourceManager 會妥善地解除委任該節點。若要解決此問題,請將更多 Amazon Elastic Block Store (Amazon EBS) 容量新增至 EMR 叢集。您可以在啟動新叢集時或修改執行中的叢集來執行此操作。

解決方法

判斷根本原因

為判斷錯誤的原因,請檢查下列 EMR 叢集的 Amazon CloudWatch 指標

  • MR 狀態不良的節點: 如果此指標顯示狀態不良的節點,則表明問題是磁碟空間不足所造成。
  • MR 遺失的節點: 如果此指標顯示遺失的節點,則表示節點因硬體故障而遺失,或節點因高 CPU 或記憶體使用率過高而無法連上。

請使用下列其中一種方式來解決磁碟空間不足所造成的遺失節點錯誤。

新叢集: 增加更多 EBS 容量

若要在啟動 EMR 叢集時增加更多 EBS 容量,請選擇較大的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體類型。較大的 EC2 執行個體包含更多 EBS 儲存容量。如需詳細資訊,請參閱執行個體的預設 EBS 儲存。(無論您選擇的執行個體類型為何,您也可以在建立叢集時修改磁碟區大小或新增更多磁碟區。)

新的或執行中的叢集: 新增更多核心節點或任務節點

執行中的叢集: 新增更多 EBS 磁碟區

執行下列動作,將更多 EBS 磁碟區附加至執行中的叢集:

1.    如果較大的 EBS 磁碟區無法解決問題,請附加更多 EBS 磁碟區至核心節點和任務節點。

2.    格式化並掛載附加的磁碟區。記得要使用正確的磁碟編號 (例如,/mnt1 或 /mnt2 而非 /data)。

3.    使用 SSH 連線至節點

4.    在 /etc/hadoop/conf/yarn-site.xmlyarn.nodemanager.local-dirs 屬性中新增路徑 /mnt1/yarn。範例:

<property>
    <name>yarn.nodemanager.local-dirs</name>
    <value>/mnt/yarn,/mnt1/yarn</value>
</property>

5.    重新啟動 NodeManager 服務:

sudo stop hadoop-yarn-nodemanager
sudo start hadoop-yarn-nodemanager

6.    啟用終止保護

如果磁碟空間仍有問題,請嘗試下列方法:

  • 移除不必要的檔案。
  • 將磁碟使用率臨界值從 90% 提高到 99%。為此,請在所有節點上修改 yarn-default.xml 中的 yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage 屬性。然後,重新啟動 hadoop-yarn-nodemanager 服務。

相關資訊

叢集因 NO_SLAVE_LEFT 和核心節點 FAILED_BY_MASTER 而終止

為什麼 Amazon EMR 叢集中的核心節點會耗盡磁碟空間?

AWS 官方
AWS 官方已更新 3 年前