本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用終止保護來保護叢集免於意外關閉
終止保護可保護您的叢集免於意外終止,這對於長時間執行的叢集處理關鍵工作負載而言特別有用。在長時間執行的叢集啟用終止保護時,您仍然可以終止叢集,但是必須先明確移除叢集的終止保護。這有助於確保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 位置,然後根據您的業務連續性需求建立適當的備份策略。
終止保護不會影響您使用下列動作擴展叢集資源的能力:
-
手動調整叢集大小 AWS Management Console 或 AWS CLI。 如需詳細資訊,請參閱手動調整執行中叢集大小。
-
使用自動擴展的向內擴展政策,從核心或任務執行個體群組移除執行個體。如需詳細資訊,請參閱針對執行個體群組,搭配使用自動擴展與自訂政策。
-
減少目標容量,從執行個體機群移除執行個體。如需詳細資訊,請參閱執行個體機群選項。
終止保護和 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 中的DisableApiStop
和DisableApiTermination
設定,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_WAIT
和 CONTINUE
。如需詳細資訊,請參閱將工作提交到叢集。
如果ActionOnFailure
設定為的步驟失敗CANCEL_AND_WAIT
,如果在啟用步驟執行後終止,叢集就會終止,而不執行後續步驟。
如果 ActionOnFailure
設定為 TERMINATE_CLUSTER
的叢集失敗,請使用下列設定表格來判斷結果。
ActionOnFailure | 步驟執行後終止 | 終止保護 | 結果 |
---|---|---|---|
|
已啟用 |
已停用 |
叢集終止 |
已啟用 |
已啟用 |
叢集終止 |
|
已停用 |
已啟用 |
叢集繼續 |
|
已停用 |
已停用 |
叢集終止 |
終止保護與 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
對執行中的叢集設定終止保護
您可以使用主控台為執行中的叢集設定終止保護,或 AWS CLI.