

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

# 使用 Amazon EMR 取代運作狀態不佳的節點
<a name="emr-plan-node-replacement"></a>

Amazon EMR 會定期使用 Apache Hadoop 中的 [NodeManager 運作狀態檢查程式服務](https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/NodeManager.html#Health_checker_service)，來監控 Amazon EC2 叢集上 Amazon EMR 中核心節點的狀態。如果節點無法正常運作，節點會標記為運作狀態不佳，運作狀態檢查程式會將該節點報告給 Amazon EMR 控制器。Amazon EMR 控制器會將節點新增至拒絕清單，防止節點接收新的 YARN 應用程式，直到節點狀態改善為止。

**注意**  
節點運作狀態不佳的常見原因是其磁碟空間不足。如需有關核心節點何時幾乎耗盡磁碟空間的詳細資訊，下列 **re：Post 知識中心**文章很有幫助：[為什麼 Amazon EMR 叢集中的核心節點耗盡磁碟空間？](https://repost.aws/knowledge-center/core-node-emr-cluster-disk-space) 

**注意**  
Hadoop 提供執行自訂節點運作狀態檢查的功能。詳情請參閱 [NodeManager](https://hadoop.apache.org/docs/r3.3.2/hadoop-yarn/hadoop-yarn-site/NodeManager.html) 的 Apache Hadoop 文件。

您可以選擇 Amazon EMR 是否應終止運作狀態不佳的節點，或將其保留在叢集中。如果您關閉運作狀態不佳的節點替換，它們會保留在拒絕清單中，並繼續計入叢集容量。您仍然可以連線至 Amazon EC2 核心執行個體進行組態和復原，因此如果您想要新增容量，可以調整叢集的大小。如需節點替換和終止運作方式的詳細資訊，請參閱[使用終止保護](https://docs.aws.amazon.com/emr/latest/ManagementGuide/UsingEMR_TerminationProtection.html)。

如果開啟運作狀態不佳的節點替換，Amazon EMR 會終止運作狀態不佳的核心節點，並根據執行個體群組中的執行個體數量，或根據執行個體機群的目標容量來佈建新的執行個體。如果任何節點運作狀態不佳超過 45 分鐘，Amazon EMR 會[正常取代節點](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-scaledown-behavior.html#emr-scaledown-terminate-task)。如果節點的正常解除委任未在一小時內完成，則節點會強制終止，除非終止會導致叢集低於複寫因素或 HDFS 容量限制。

**重要**  
請注意，節點正常解除委任或終止之前所花費的時間可能會有所變更。  
雖然運作狀態不佳的節點替換可大幅降低資料遺失的可能性，但無法完全消除風險。在正常取代運作狀態不佳的核心執行個體期間，HDFS 資料可能會永久遺失。建議您一律備份資料。

如需識別運作狀態不佳節點和復原的詳細資訊，請參閱[資源錯誤](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-troubleshoot-error-resource.html)。此外，如需維護叢集運作狀態的更多最佳實務，請參閱下列文件，了解 [Amazon EMR 叢集終止時出現 NO\$1SLAVE\$1LEFT 和核心節點 FAILED\$1BY\$1MASTER](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-cluster-NO_SLAVE_LEFT-FAILED_BY_MASTER.html) 資源錯誤。

Amazon EMR 發佈 Amazon CloudWatch Events 以進行運作狀態不佳的節點替換，因此您可以追蹤運作狀態不佳的核心執行個體發生的情況。如需詳細資訊，請參閱[運作狀態不佳的節點替換事件](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-manage-cloudwatch-events.html#emr-cloudwatch-unhealthy-node-replacement-events)。

## 預設節點替換和終止保護設定
<a name="emr-plan-node-replacement-defaults"></a>

運作狀態不佳的節點替換適用於所有 Amazon EMR 版本，但預設設定取決於您選擇的發行標籤。您可以在建立新叢集時設定運作狀態不佳的節點取代，或隨時前往叢集組態，以變更任何這些設定。

如果您要建立執行 Amazon EMR 7.0 版或更低版本的單一節點叢集或高可用性叢集，則運作狀態不佳的節點替換預設設定取決於終止保護：
+ 啟用終止保護會**停用運作狀態不佳的**節點替換。
+ 停用終止保護**會啟用**運作狀態不佳的節點替換。

## 啟動叢集時設定運作狀態不佳的節點替換
<a name="emr-plan-node-replacement-create-cluster"></a>

當您使用主控台 AWS CLI、 或 API 啟動叢集時，可以啟用或停用運作狀態不佳的節點替換。

預設運作狀態不佳的節點替換設定取決於您啟動叢集的方式：
+ Amazon EMR 主控台 — 預設會**啟用**運作狀態不佳的節點替換。
+ AWS CLI `aws emr create-cluster` — 除非指定 ，否則預設會**啟用**運作狀態不佳的節點替換`--no-unhealthy-node-replacement`。
+ Amazon EMR [RunJobFlow API 命令](https://docs.aws.amazon.com/emr/latest/APIReference/API_RunJobFlow.html) — 除非您將`UnhealthyNodeReplacement`布林值設定為 `True`或 ，否則預設會**啟用**運作狀態不佳的節點替換`False`。

------
#### [ Console ]

**使用主控台建立叢集時，開啟或關閉運作狀態不佳的節點替換**

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) 開啟 Amazon EMR 主控台。

1. 在左側導覽窗格中的 **EC2 上的 EMR** 下，選擇**叢集**，然後選擇**建立叢集**。

1. 針對 **EMR 發行版本**，選擇您想要的 Amazon EMR 發行標籤。

1. 在**叢集終止和節點替換**下，確定已預先選取**運作狀態不佳的節點替換 （建議）**，或清除選取項目將其關閉。

1. 選擇適用於您的叢集的任何其他選項。

1. 若要啟動您的叢集，請選擇**建立叢集**。

------
#### [ AWS CLI ]

**使用 建立叢集時，開啟或關閉運作狀態不佳的節點替換 AWS CLI**
+ 使用 AWS CLI，您可以使用 `create-cluster`命令搭配 `--unhealthy-node-replacement ` 參數啟動啟用運作狀態不佳節點取代的叢集。運作狀態不佳的節點取代預設為開啟。

  下列範例會建立啟用運作狀態不佳節點替換的叢集：
**注意**  
包含 Linux 行接續字元 (\$1) 是為了提高可讀性。它們可以在 Linux 命令中移除或使用。對於 Windows，請將其移除或取代為插入符號 (^)。

  ```
  aws emr create-cluster --name "SampleCluster" --release-label emr-7.12.0 \
  --applications Name=Hadoop Name=Hive Name=Pig \
  --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge \
  --instance-count 3 --unhealthy-node-replacement
  ```

  如需在 中使用 Amazon EMR 命令的詳細資訊 AWS CLI，請參閱 [Amazon EMR AWS CLI 命令](https://docs.aws.amazon.com//cli/latest/reference/emr)。

------

## 在執行中的叢集中設定運作狀態不佳的節點替換
<a name="emr-plan-node-replacement-running-cluster"></a>

您可以使用 主控台 AWS CLI、 或 API，為執行中的叢集開啟或關閉運作狀態不佳的節點替換。

------
#### [ Console ]

**使用主控台開啟或關閉執行中叢集運作狀態不佳的節點替換**

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) 開啟 Amazon EMR 主控台。

1. 在左側導覽窗格中的 **EC2 上的 EMR** 下，選擇**叢集**，然後選取您要更新的叢集。

1. 在叢集詳細資訊頁面上的**屬性**索引標籤上，尋找**叢集終止和節點取代**，然後選取**編輯**。

1. 選取或清除**運作狀態不佳的節點取代**核取方塊，以開啟或關閉此功能。然後選擇**儲存變更**以確認。

------
#### [ AWS CLI ]

**使用 開啟或關閉執行中叢集運作狀態不佳的節點替換 AWS CLI**
+ 若要在具有 的執行中叢集上開啟運作狀態不佳的節點替換 AWS CLI，請使用 `modify-cluster-attributes`命令搭配 `--unhealthy-node-replacement` 參數。若要停用，請使用 `--no-unhealthy-node-replacement` 參數。

  下列範例會在 ID 為 *j-3KVTXXXXXX7UG* 的叢集上開啟運作狀態不佳的節點替換：

  ```
  1. aws emr modify-cluster-attributes --cluster-id j-3KVTXXXXXX7UG --unhealthy-node-replacement
  ```

  下列範例會關閉相同叢集上運作狀態不佳的節點替換：

  ```
  1. aws emr modify-cluster-attributes --cluster-id j-3KVTXXXXXX7UG --no-unhealthy-node-replacement
  ```

------