Azure Databricks 中的經典運算資源使用彈性節點類型,當指定的實例類型無法使用時,運算資源可退回到相容的其他實例類型。
此行為透過減少運算啟動時的容量故障(缺貨錯誤)來提升運算啟動的可靠性。 對於具備備援的點實例,彈性節點類型可嘗試在不同實例類型間多次取得實例,然後再退回按需實例。 這會導致更多實例以點位而非隨選執行,降低整體運算成本。
彈性節點類型的運作方式
當你啟動運算資源時,雲端服務提供者有時會因應你指定的實例類型容量不足。 這會導致缺貨錯誤:
CLOUD_PROVIDER_RESOURCE_STOCKOUT
雖然這些錯誤在點狀實例中較為常見,但按需實例也可能發生。
啟用彈性節點類型後,Azure Databricks 會自動產生或使用你指定的相容實例類型的備用清單。 若您偏好的實例類型無法使用,Azure Databricks 會嘗試取得這些備份實例類型,而非立即失敗。
在您的工作空間中啟用彈性節點類型
Workspace 管理員可以在他們的工作區管理員設定中啟用彈性節點類型。 啟用後,所有新的經典運算資源會自動退回到其他節點類型。 現有的多功能運算資源則不受影響。 請參閱 「現有工作負載如何受影響?」。
要在工作區中啟用彈性節點類型:
- 身為工作區系統管理員,請移至 [ 設定] 頁面。
- 點擊 計算 標籤。
- 切換啟用 自動彈性節點類型 設定:
- 啟用:所有新的經典運算資源都會自動使用彈性節點類型,除非明確停用。
-
停用:經典運算資源只有在計算資源設定中明確設定
node_type_flexibility時才會使用彈性節點類型。
若此設定被停用,使用者仍可透過明確配置 worker_node_type_flexibility OR driver_node_type_flexibility 欄位並自訂備援清單,為個別運算資源配置靈活節點類型。 為了防止使用者設定這些欄位,工作區管理員可以使用運算策略。 請參閱 彈性節點類型政策範例。
指定自訂備用清單
當您的工作空間啟用彈性節點類型時,Azure Databricks 會自動產生相容的實例類型備用清單,以支援新的運算資源。
如果你不想使用自動產生的備援清單,也可以自訂自己的備援清單。 此外,如果你的工作區中關閉了彈性節點類型,你仍然可以為運算資源指定自訂的備援清單。 只有特定實例類型是相容的。 請參見 備援實例類型要求。 關於相容實例類型的參考,請參見 彈性節點類型相容性參考。
自訂備援清單僅在使用 API 設定運算時被支援。 請參閱 Clusters API 參考文件。
例如,以下配置指定計算資源在需要時將退回哪種實例類型:
"worker_node_type_flexibility": {
"alternate_node_type_ids": [
"Standard_L8s_v2"
]
},
"driver_node_type_flexibility": {
"alternate_node_type_ids": [
"Standard_L8s_v2"
]
},
備援實例類型需求
備援實例類型必須與計算所偏好的實例類型相容。 你的備用實例類型清單必須符合以下條件:
- vCPU 數量和記憶體與偏好實例類型相同(備援實例的記憶體必須在該偏好實例類型的 100% 到 110% 之間)
- 本地磁碟數量與磁碟大小與偏好實例類型相同
- CPU 架構與偏好的實例類型相同(全 ARM 或全 x86)
- 作業系統映像檔與 Photon 支援與首選實例類型相同
- 沒有 GPU 實例類型(不支援 GPU)
- 最多可有 5 種獨特的備用實例類型
- 所有實例類型都必須有一致的儲存支援:要麼全部支援PREMIUM_LRS儲存,要麼都沒有。
使用靈活的節點類型與資源池互動
你也可以自訂一個池子的備用清單。 在 Pools API 中,設定 node_type_flexibility 欄位指定備援實例類型。 例如:
"node_type_flexibility": {
"alternate_node_type_ids": ["Standard_L8s_v2"]
}
池不支援使用彈性實例類型以維持最低閒置數量。 該池只能在嘗試從池中啟動運算時,使用備援實例類型啟動虛擬機。 預熱 minIdle 計數只使用偏好的實例類型。
查看已取得的實例類型
使用彈性節點類型時,你的運算資源可能由多種不同實例類型的混合組成。 所有備用實例類型都相容於你偏好的類型,維持相同的 vCPU 數量、記憶體、磁碟配置、CPU 架構及作業系統映像檔,以確保你的工作負載正常運行。
您可以查看為您的計算資源取得的實例類型:
- 在計算細節頁面,點選 終止 按鈕旁的三個點,選擇 「檢視 JSON」。
- 檢視
node_type_id每個執行器的欄位,看看哪些實例類型正在執行。
你也可以使用 Get clusters info API 來程式化取得這些資訊。 此外,擁有存取系統資料表權限的使用者也可以查詢該 node_timelines 資料表。 請參閱 節點時間軸資料表架構。
在運算資源上停用彈性節點類型
備註
Databricks 建議除非你對特定實例類型有嚴格要求,否則維持彈性節點類型開啟。
如果你希望運算啟動失敗,而不是退回到其他實例類型,可以在個別運算資源層級關閉彈性節點行為。 這只在使用 Clusters API 時才支援。 要停用彈性節點類型,請在計算設定中將彈性節點類型欄位設為空。 例如:
"worker_node_type_flexibility": {
"alternate_node_type_ids": []
},
"driver_node_type_flexibility": {
"alternate_node_type_ids": []
}
常見問題
現有的工作負載會受到什麼影響?
現有的多功能運算資源保持不變。 若要使用自動備援,請在啟用該設定後建立新的多功能運算資源,或用自訂備援清單更新運算資源 API 規範。
對於使用工作運算的工作,每次執行都會產生一個新的運算資源,因此現有工作後續的執行會自動使用彈性的備援。
這在實例池中能用嗎?
是的。 彈性節點類型適用於你的實例池配置。 有幾點需要注意:
-
最低空閒保持一致:池的最低空閒實例(
minIdle)會用你的主要節點類型來維持。 當主要類型受限時,任何透過叢集啟動請求啟動的新虛擬機可以用相容的備援節點類型來實現。 - 池子編輯:實例池建立後你無法再編輯。 如果你想更改任何自訂的備用設定,必須建立一個新的實例池。
-
API 可視性:除非你在池中明確設定了自訂的備援清單,否則回應
/api/2.0/instance-pools/get不會顯示節點類型的彈性。 要查看實例池的備用配置,你可以建立樣本叢集並查看回應。/api/2.1/clusters/get
計費的運作方式是怎樣的?
你的帳單是根據實際取得的實例類型的標準 DBU 費率來計算。 你與雲端供應商的實例層級折扣會自動套用到計算資源所使用的相應實例類型。
這會如何與我工作空間中的節點類型配額互動?
如果運算啟動失敗,因為你的主要節點類型達到「配額超過」限制,彈性節點類型仍能透過自動退回相容的替代方案來提升啟動可靠性。 不過,對於配額驅動的失敗,Databricks 建議將備用系統視為安全網,而非主要解決方案。 你可以向雲端供應商申請增加配額,讓 Azure Databricks 能持續取得你偏好的實例類型,再考慮其他替代方案,或使用無伺服器運算。
我可以只為部分工作負載啟用彈性節點類型嗎?
自動產生的節點類型備援只能在工作區層級設定。 不過,你有兩個選項可以控制特定工作負載的備援行為: