

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon EMR 叢集終止 NO\_SLAVE\_LEFT 和核心節點 FAILED\_BY\_MASTER
<a name="emr-cluster-NO_SLAVE_LEFT-FAILED_BY_MASTER"></a>

通常會發生這種情況，是因為終止保護已停用，而且所有核心節點超過`yarn-site.xml` 檔案相對應的 `yarn-site` 組態分類之中使用率閾值上限所指定的磁碟儲存容量。此值預設為 90%。核心節點的磁碟使用率超過使用率閾值時，YARN NodeManager 運作狀態服務會報告節點為 `UNHEALTHY`。在此狀態中，Amazon EMR 會將節點列入拒絕清單，而不會對其分配 YARN 容器。如果節點維持運作狀態不佳的狀態持續 45 分鐘，Amazon EMR 會將終止的關聯 Amazon EC2 執行個體標記為 `FAILED_BY_MASTER`。與核心節點關聯的所有 Amazon EC2 執行個體都已標示為終止時，叢集會以 `NO_SLAVE_LEFT` 狀態終止，因為沒有資源可執行作業。

一個核心節點超出磁碟使用率可能會導致連鎖反應。如果單一節點由於 HDFS 超出磁碟使用率閾值，則其他節點也可能已接近閾值。第一個節點超出磁碟使用率閾值，因此 Amazon EMR 將其列入拒絕清單。這會對於其餘節點增加磁碟使用率的負擔，因為其餘節點會開始複製在列入拒絕清單的節點上彼此之間缺少的 HDFS 資料。每個節點接著都會以類似的方式變成 `UNHEALTHY`，叢集最終會終止。

## 最佳實務與建議
<a name="w2aac36c21c13b7b7"></a>

### 設定叢集硬體的足夠儲存
<a name="w2aac36c21c13b7b7b3"></a>

您建立叢集時，請確保有足夠的核心節點，而且每個產品都擁有對於 HDFS 充足的執行個體存放區和 EBS 儲存磁碟區。如需詳細資訊，請參閱[計算叢集的必要 HDFS 容量](emr-plan-instances-guidelines.md#emr-plan-instances-hdfs)。您也可以手動或使用自動擴展將核心執行個體新增到現有的執行個體群組。新的執行個體具有與執行個體群組中的其他執行個體相同的儲存體組態。如需詳細資訊，請參閱[使用 Amazon EMR 叢集擴展來調整不斷變化的工作負載](emr-scale-on-demand.md)。

### 啟用終止保護
<a name="w2aac36c21c13b7b7b5"></a>

啟用終止保護。如此一來，如果某個核心節點被列入拒絕清單，您可以使用 SSH 連接到關聯的 Amazon EC2 執行個體，以進行疑難排解並復原資料。如果您啟用終止保護，請注意 Amazon EMR 不會以新的執行個體取代 Amazon EC2 執行個體。如需詳細資訊，請參閱[使用終止保護來保護 Amazon EMR 叢集免於意外關閉](UsingEMR_TerminationProtection.md)。

### 為 MRUnhealthyNodes CloudWatch 指標建立警示
<a name="w2aac36c21c13b7b7b7"></a>

這個指標會報告呈報 `UNHEALTHY` 狀態的節點數量。這是相當於 YARN 指標 `mapred.resourcemanager.NoOfUnhealthyNodes`。您可以設定此警示的通知在達到 45 分鐘逾前告知您運作狀態不佳的節點。如需詳細資訊，請參閱[使用 CloudWatch 來監控 Amazon EMR 指標](UsingEMR_ViewingMetrics.md)。

### 使用 yarn-site 調整設定
<a name="w2aac36c21c13b7b7b9"></a>

您可以根據您的應用程式需求調整下列節點。例如，對於節點報告 `UNHEALTHY` 的情況，您可能想要增加 `yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage` 的值來提高磁碟使用率閾值。

您可以在使用 `yarn-site` 組態分類建立叢集時設定這些值。如需詳細資訊，請參閱《Amazon EMR 版本指南》**中的[設定應用程式](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html)。您也可以使用 SSH 連接到與核心節點關聯的 Amazon EC2 執行個體，然後使用文字編輯器在 `/etc/hadoop/conf.empty/yarn-site.xml` 中新增值。變更後，您必須重新啟動 Hadoop-yarn-nodemanager，如下所示。

**重要**  
您重新啟動 NodeManager 服務時，除非在您您建立叢集時 `yarn.nodemanager.recovery.enabled` 是使用 `yarn-site` 組態分類的設定為 `true`，否則會終止作用中的 YARN 容器。您也必須使用 `yarn.nodemanager.recovery.dir` 屬性指定目錄來存放容器狀態。

```
sudo /sbin/stop hadoop-yarn-nodemanager
sudo /sbin/start hadoop-yarn-nodemanager
```

如需目前 `yarn-site` 屬性和預設值的詳細資訊，請參閱 Apache Hadoop 文件中的 [YARN 預設設定](http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-common/yarn-default.xml)。


| 屬性 | 預設值 | Description | 
| --- | --- | --- | 
| yarn.nodemanager.disk-health-checker.interval-ms | 120000 | 磁碟執行運作狀態檢查的頻率 (以秒為單位)。 | 
| yarn.nodemanager.disk-health-checker.min-healthy-disks | 0.25 | NodeManager 啟動新的容器時必須達到的最低正常運作磁碟數量。這對應於 yarn.nodemanager.local-dirs (預設為 Amazon EMR 中的 `/mnt/yarn`) 和 yarn.nodemanager.log-dirs (預設為 `/var/log/hadoop-yarn/containers`，這會透過符號連結來連結到 Amazon EMR 中的 `mnt/var/log/hadoop-yarn/containers`)。 | 
| `yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage` | 90.0 | 磁碟標示為錯誤之前允許的磁碟空間使用率百分比上限。值可介於 0.0 到 100.0 之間。如果值大於或等於 100，NodeManager 會檢查整個磁碟。這適用於 `yarn-nodemanager.local-dirs` 和 `yarn.nodemanager.log-dirs`。 | 
| `yarn.nodemanager.disk-health-checker.min-free-space-per-disk-mb` | 0 | 磁碟提供的空間下限。這適用於 `yarn-nodemanager.local-dirs` 和 `yarn.nodemanager.log-dirs`。 | 