使用終止保護來保護叢集免於意外關閉 - Amazon EMR

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

使用終止保護來保護叢集免於意外關閉

終止保護可保護您的叢集免於意外終止,這對於長時間執行的叢集處理關鍵工作負載而言特別有用。在長時間執行的叢集啟用終止保護時,您仍然可以終止叢集,但是必須先明確移除叢集的終止保護。這有助於確保EC2執行個體不會因意外或錯誤而關閉。您可以在建立叢集時啟用終止保護,也可以對於執行中的叢集變更設定。

啟用終止保護後,Amazon 中的TerminateJobFlows動作將EMRAPI無法運作。使用者無法使用此API或terminate-clusters指令終止叢集 AWS CLI。 API返回一個錯誤,並返回一個非零返回代碼的 CLI exit。當您使用 Amazon EMR 主控台終止叢集時,系統會提示您額外步驟關閉終止保護。

警告

終止保護不保證在發生人為錯誤或解決事件時會保留資料 — 例如,如果在使SSH用連線至執行個體時從命令列發出重新啟動命令,或者使用 Amazon EC2 或 Amazon EMR API 停用終止保護。如果您執行的是 Amazon 7.1 及更高EMR版本,且執行個體運作狀態不佳且無法復原,也是如此。即使啟用終止保護,儲存在執行個體儲存體的資料 (包括HDFS資料) 也可能會遺失。將資料輸出寫入至 Amazon S3 位置,然後根據您的業務連續性需求建立適當的備份策略。

終止保護不會影響您使用下列動作擴展叢集資源的能力:

終止保護和 Amazon EC2

Amazon 叢集中的終止保護設定與EMR叢集中所有 Amazon EC2 執行個體的DisableApiTermination屬性相對應。例如,如果您在叢集中啟用終止保護,Amazon EMR 會自動DisableApiTermination將EMR叢集中的所有EC2執行個體設定EMR為 true。如果停用終止保護,同樣適用。Amazon EMR 會針對EMR叢集內的所有EC2執行個體自動設DisableApiTermination定為 false。如果您終止或縮減來自 Amazon 的叢集以EMR及某個EC2執行個體的 Amazon EC2 設定衝突,Amazon 會EMR優先處理 Amazon EMR 設定,而非 Amazon 中的DisableApiStopDisableApiTermination設定,EC2並繼續終止執行個體EC2。

例如,您可以使用 Amazon 主EC2控台在停用終止保護的EMR叢集中的 Amazon EC2 執行個體啟用終止保護。如果您使用 Amazon EMR 主控台終止或縮減叢集, AWS CLI,或 Amazon EMRAPI,Amazon EMR 覆蓋該DisableApiTermination設置,將其設置為 false,並與其他實例一起終止實例。

您也可以使用 Amazon EC2 主控台在停用終止保護的EMR叢集中的 Amazon EC2 執行個體啟用停止保護。如果您終止或縮減叢集,Amazon 會在 Amazon 中DisableApiStop將EMR設定為 false,EC2並將執行個體與其他執行個體一起終止。

只有在您終止或縮減叢集時,Amazon 才EMR會覆寫此DisableApiStop設定。當您在EMR叢集中啟用或停用終止保護時,Amazon EMR 不會變更個別EMR叢集中任何EC2執行個體的disableApiStop設定。

重要

如果您將實例創建為具有終止保護的 Amazon EMR 集群的一部分,並且使用 Amazon EC2 API 或 AWS CLI 命令來修改實例,所以false,然後DisableApiTermination是 Amazon EC2 API 或 AWS CLI 命令運行TerminateInstances操作,Amazon EC2 實例終止。

終止保護和狀態不良的節YARN點

Amazon EMR 會定期檢查在群集中的核心和任務 Amazon EC2 實例上運行的節點的 Apache Hadoop YARN 狀態。健全狀況檢查程式服務會報告NodeManager 健全狀況狀態。如果節點報告UNHEALTHY,Amazon EMR 執行個體控制器會將節點新增到拒絕清單,並且在節點再次變得健康狀態良好之前不會為其分配YARN容器。根據終止保護、運作狀態不良的節點替換和 Amazon EMR 發行版本的狀態,Amazon EMR 將取代運作狀態不良的執行個體,或停止將控制器分配給執行個體

終止保護和步驟執行後終止

當您在步驟執行後啟用終止啟用終止保護時,Amazon EMR 會忽略終止保護。

您將步驟提交到叢集時,可以設定 ActionOnFailure 屬性,以判斷步驟由於錯誤而無法完成執行時會發生什麼情況。這個設定的可能值為 TERMINATE_CLUSTER (對於舊版 TERMINATE_JOB_FLOW)、CANCEL_AND_WAITCONTINUE。如需詳細資訊,請參閱將工作提交到叢集

如果ActionOnFailure設定為的步驟失敗CANCEL_AND_WAIT,如果在啟用步驟執行後終止,叢集就會終止,而不執行後續步驟。

如果 ActionOnFailure 設定為 TERMINATE_CLUSTER 的叢集失敗,請使用下列設定表格來判斷結果。

ActionOnFailure 步驟執行後終止 終止保護 結果

TERMINATE_CLUSTER

已啟用

已停用

叢集終止

已啟用

已啟用

叢集終止

已停用

已啟用

叢集繼續

已停用

已停用

叢集終止

終止保護與 Spot 執行個體

Amazon EMR 終止保護不會阻止 Amazon EC2 競價型執行個體在競價型價格上升至最高現貨價格時終止。

您啟動叢集時設定終止保護

當您使用主控台啟動叢集時,您可以啟用或停用終止保護 AWS CLI,或API.

對於單節點叢集,預設終止保護設定如下:

  • 透過 Amazon EMR 主控台啟動叢集 — 終止保護預設為停用

  • 啟動叢集的方式 AWS CLI aws emr create-cluster除非已指定,否則--termination-protected會停用「終止保護」。

  • 透過 Amazon EMR API RunJobFlow指令啟動叢集 — 除非TerminationProtected布林值設定為,否則終止保護會停用true

對於高可用性叢集,預設終止保護設定如下:

  • 透過 Amazon EMR 主控台啟動叢集 — 預設會用終止保護。

  • 啟動叢集的方式 AWS CLI aws emr create-cluster除非已指定,否則--termination-protected會停用「終止保護」。

  • 透過 Amazon EMR API RunJobFlow指令啟動叢集 — 除非TerminationProtected布林值設定為,否則終止保護會停用true

Console
使用主控台建立叢集時開啟或關閉終止保護
  1. 登入 AWS Management Console,然後在 https://console.aws.amazon.com/em r 打開 Amazon EMR 控制台。

  2. EC2在左側導覽窗格的 [開EMR啟] 下,選擇 [集],然後選擇 [建立叢集]。

  3. 對於EMR發行版本,請選擇 emr-6.6.0 或更新版本。

  4. 在 [叢集終止和節點取代] 下,確定已預先選取 [使用終止保護],或清除選取以將其關閉。

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

  6. 若要啟動您的叢集,請選擇建立叢集

AWS CLI
若要在建立叢集時開啟或關閉終止保護 AWS CLI
  • 隨著 AWS CLI,您可以啟動具有--termination-protected參數的create-cluster命令啟用終止保護的叢集。終止保護預設為停用。

    下列範例會建立終止保護已啟用的叢集:

    注意

    包含 Linux 行接續字元 (\) 是為了提高可讀性。它們可以在 Linux 命令中移除或使用。對於 Windows,請將其移除或取代為插入符號 (^)。

    aws emr create-cluster --name "TerminationProtectedCluster" --release-label emr-7.2.0 \ --applications Name=Hadoop Name=Hive Name=Pig \ --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge \ --instance-count 3 --termination-protected

    如需有關在中使用 Amazon EMR 命令的詳細資訊 AWS CLI,請參閱https://docs.aws.amazon.com/cli/latest/reference/emr

對執行中的叢集設定終止保護

您可以使用主控台為執行中的叢集設定終止保護,或 AWS CLI.

Console
使用主控台為執行中的叢集開啟或關閉終止保護
  1. 登入 AWS Management Console,然後在 https://console.aws.amazon.com/em r 打開 Amazon EMR 控制台。

  2. EC2在左側導覽窗格的 [開EMR啟] 下,選擇 [叢集],然後選取您要更新的叢集。

  3. 在叢集詳細資訊頁面的屬性標籤上,尋找叢集終止,然後選取編輯

  4. 選取或清除使用終止保護核取方塊,以開啟或關閉此功能。然後選擇儲存變更以確認。

AWS CLI
若要開啟或關閉執行中叢集的終止保護,請使用 AWS CLI
  • 若要在執行中的叢集上啟用終止保護 AWS CLI,將modify-cluster-attributes指令與--termination-protected參數搭配使用。若要停用,請使用 --no-termination-protected 參數。

    下列範例會在具有 ID 的叢集上啟用終止保護 j-3KVTXXXXXX7UG:

    aws emr modify-cluster-attributes --cluster-id j-3KVTXXXXXX7UG --termination-protected

    下列範例會對於同一個叢集停用終止保護:

    aws emr modify-cluster-attributes --cluster-id j-3KVTXXXXXX7UG --no-termination-protected