

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

# 在 Presto 中處理 Spot 執行個體遺失
<a name="presto-spot-loss"></a>

借助 Amazon EMR 中的 Spot 執行個體，您可以在備用 Amazon EC2 容量上以較低成本執行大數據工作負載。成本降低的代價是，Amazon EC2 可能顯示兩分鐘通知而中斷 Spot 執行個體。當您終止節點時，Presto 可能需要長達 10 分鐘，然後才會傳回錯誤。這會導致錯誤報告和可能重試的不必要延遲。快速終止是一項功能，可讓您控制 Presto 處理已終止節點的方式。

Presto 協調器的作業是，透過定期進行輪詢的狀態，追蹤所有作業節點。如果沒有快速終止，協調器不會向 YARN NodeManager 查詢每個節點的狀態。這可能會導致在查詢失敗前進入長時間重試迴圈。透過快速終止，Presto 協調器會在輪詢無法到達主機時查詢 NodeManager 中的節點狀態。如果 NodeManager 顯示節點處於非作用中，Presto 會放棄進一步重試，使查詢失敗並傳回 `NODE_DECOMMISSIONED` 錯誤。

以下一組組態參數可讓您在節點終止時，控制並自訂 Presto 的行為。


**用於處理節點失敗的 Presto 組態**  

| 設定 | 描述 | 預設 | 
| --- | --- | --- | 
| query.remote-task.max-backoff-duration | 協調器繼續嘗試從工作節點擷取遠端任務狀態的持續時間。 | 10 分鐘 | 
| query.remote-task.quick-terminate-node-failure | 如果協調器無法到達節點，或無法連線到在該節點上執行的工作者，則啟動快速節點故障。`query.remote-task.terminate-on-connect-exception` 的值決定了協調器是否必須到達節點或連線至工作者。<br />節點查詢失敗，Amazon EMR 會從可用工作者清單中移除該節點。當這種情況發生時，您無法使用該節點來排定新的查詢。<br />當您將此值設定為 `false` 時，Presto 會還原為先前的行為，其中 Presto 協調器會在將節點標記為不可用前再次嘗試連接節點 (針對 `query.remote-task.max-backoff-duration`)，並且使該節點上的持續查詢失敗。 | true | 
| query.remote-task.terminate-on-connect-exception | 指定當主機可連接，但協調器無法連線到該主機的工作者處理序時，Amazon EMR 是否應該移除節點。這個值設為 true 時，如果無法連線到主機，您將啟動快速查詢失敗。 | false | 