最佳實踐:集群配置
磚時提供了許多選項來幫助你創建和配置集群以最低的成本獲得最佳性能。然而,這種靈活性可以創建挑戰當你試圖確定最優配置為您的工作負載。仔細考慮用戶如何將利用集群將幫助指導配置選項當您創建新集群或配置現有的集群。時需要考慮的一些事情確定配置選項:
什麼類型的用戶將使用集群?數據科學家可能運行不同的工作類型,不同的需求數據工程師或數據分析師。
什麼類型的工作負載將用戶在集群上運行?例如,批量提取、轉換和加載(ETL)工作比分析工作負載可能會有不同的要求。
什麼級別的服務水平協議(SLA)你需要見麵?
你有預算限製什麼?
本文提供了集群配置的建議基於這些考慮不同的場景。本文還討論了磚集群的特定功能和注意事項要記住那些特性。
您的配置決策需要成本和性能之間的權衡。一個集群的主要成本包括磚單位(DBUs)消耗的集群和底層資源的成本需要集群運行。可能沒有什麼明顯的二次成本如不滿足SLA的業務成本,減少員工的效率,或可能浪費資源,因為可憐的控製。
集群功能
在討論更詳細的集群配置場景之前,重要的是要理解一些磚集群的特點和如何最好地使用這些功能。
通用的集群和集群的工作
當你創建一個集群你選擇一個集群類型:通用集群或集群的工作。通用集群可以由多個用戶共享,最好進行特別分析,數據勘探或開發。一旦你完成了實現加工和準備實施代碼,切換到運行在集群的工作上。集群工作終止你的工作結束時,減少資源使用和成本。
自動定量
請注意
計算伸縮擴展限製了集群大小結構化流工作負載。磚建議使用三角洲表與增強的自動定量直播工作負載。看到增強的自動定量是多少?。
自動定量允許根據工作負載集群自動調整。自動定量可以受益許多用例和場景從成本和性能的角度來看,但是是很有挑戰性的,明白何時以及如何使用自動定量。下麵是一些注意事項決定是否使用自動定量和如何獲得最大的好處:
自動定量通常是一個固定大小的集群相比,降低了成本。
自動定量工作負載集群可以運行得更快而under-provisioned固定大小。
一些工作負載不兼容自動定量集群,包括spark-submit工作和一些Python包。
與單用戶通用集群,用戶可能會發現自動定量時減慢他們的開發或分析最小數量的工人設置過低。這是因為他們運行的命令或查詢通常是幾分鍾,時間集群是閑置,可能減少以節省成本。執行下一個命令時,集群管理器將嚐試擴大,幾分鍾,從雲提供商檢索實例。在此期間,喬布斯可能運行與資源不足,減緩時間檢索結果。雖然增加了最小數量的工人幫助,但也會增加成本。這是另一個例子,成本和性能需要平衡。
如果三角洲緩存正在使用,重要的是要記住,任何緩存的數據節點丟失如果節點是終止。如果保留緩存數據是很重要的對於你的工作量,考慮使用一個固定大小的集群。
如果你有一個集群運行ETL工作負載,工作時有時集群大小適當調整如果你知道你的工作不太可能改變。然而,自動定量給你如果你的數據大小增加靈活性。同樣值得注意的是優化的自動定量可以減少費用和長時間運行的工作如果有長時間充分利用集群時從另一個進程或等待結果。再一次,你的工作可能會經曆輕微延誤集群試圖適當擴大。如果你有嚴格sla找工作,一個固定大小的集群可能是一個更好的選擇或考慮使用磚池減少集群開始時間。
池
創建一個池減少集群啟動和擴大時間通過維護一組可用的,現成的實例。磚建議利用池以提高處理時間的同時最小化成本。
磚運行時版本
磚建議使用最新的磚的運行時版本的通用集群。使用最新的版本將確保你有最新的優化和最新的代碼之間的兼容性和預緊包。
連續工作的集群運行工作負載,可以考慮使用長期支持(LTS)磚運行時版本。使用LTS版將確保你不遇到兼容性問題,可以徹底地測試工作負載在升級之前。如果你有一個先進的用例在機器學習,考慮專業磚運行時版本。
集群政策
磚集群政策允許管理員執行控製集群的創建和配置。磚推薦使用的集群政策,幫助應用本指南中討論的建議。了解更多關於集群政策集群政策的最佳實踐指南。
自動終止
很多用戶不會認為終止他們的集群完成時使用它們。幸運的是,集群自動終止後一組,默認為120分鍾。
管理員可以改變這種默認設置在創建集群政策。減少這個設置可以降低成本減少集群處於空閑狀態的時間。重要的是要記住,當一個集群終止所有狀態丟失,包括所有變量、臨時表、緩存、函數、對象,等等。所有這些國家需要恢複當集群重新開始。如果開發步驟30分鍾的午休時間,它將浪費花同樣多的時間去一個筆記本回到相同的狀態。
重要的
閑置集群持續積累DBU和雲實例指控不活動期間在終止之前。
垃圾收集
雖然它可能不太明顯比本文中討論的其他因素,注意垃圾收集可以幫助優化工作性能集群。提供大量的RAM可以幫助工作更有效地執行垃圾收集期間但也會導致延遲。
長掃垃圾收集的影響降到最低,避免與大量的RAM部署集群配置為每個實例。有更多的RAM分配給執行器將導致更長的垃圾收集時間。相反,配置實例內存較小的尺寸,如果你需要更多的內存和部署多個實例為你工作。然而,有更少的節點與更多的RAM推薦的情況下,例如,需要很多打亂的工作負載,如前所述集群規模的考慮。
集群規模的考慮
磚一個人均執行器節點運行。因此執行者和工人是交替使用的磚結構。人們常把集群規模的工人的數量,但也有其他重要的因素需要考慮:
總執行人核心(計算):在所有執行者核心的總數。這決定了集群的最大並行度。
總執行人內存:內存的總量在所有執行者。這決定了多少數據可以存儲在內存溢出到磁盤之前。
遺囑執行人本地存儲:本地磁盤存儲的類型和數量。本地磁盤中主要是用於泄漏的情況下震蕩和緩存。
其他因素包括職工實例類型和大小,上麵也影響因素。分級集群時,考慮:
數據將工作負載消耗多少?
你的工作負載的計算複雜度是什麼?
你讀取數據從哪兒來的?
外部存儲器中的數據分區嗎?
你需要多少並行?
回答這些問題將幫助您確定最優基於工作負載集群配置。隻有簡單的ETL風格的工作負載,使用窄轉換(轉換每個輸入分區隻會導致一個輸出分區),專注於一個compute-optimized配置。如果你期望很多打亂,內存是很重要的,以及存儲占數據泄漏。減少大量實例可以減少機器之間傳輸數據時網絡I / O在shuffle-heavy工作負載。
之間有一個平衡的數量大小的工人和工人實例類型。集群有兩個工人,每個核心40和100 GB的RAM,有相同的集群計算和內存為8個工人10核和25 GB的RAM。
如果你期望許多重新讀取相同的數據,那麼你的工作負載可能受益於緩存。考慮一個存儲優化配置與δ緩存。
集群規模的例子
下麵的例子展示基於特定類型的工作負載集群的建議。這些例子還包括配置,以避免和為什麼這些配置不適合工作負載類型。
數據分析
數據分析師通常執行處理需要來自多個分區的數據,導致很多洗牌操作。用更小的數字集群的節點可以減少所需的網絡和磁盤I / O執行這些打亂。集群在以下圖可能是最好的選擇,特別是對於集群支持一個分析師。
集群D以來最嚴重的性能可能會提供更大的節點數量更少的內存和存儲需要更多的洗牌的數據完成處理。
分析工作負載可能需要反複閱讀相同的數據,所以推薦工人類型存儲優化三角洲啟用緩存。
建議分析工作負載的其他功能包括:
啟用自動終止,以確保集群經過一段時間的不活動終止。
考慮啟用自動定量根據分析師的典型的工作負載。
考慮使用池,這將允許限製集群預先核準的實例類型,確保一致的集群配置。
功能可能不是有用:
存儲自動定量,因為這個用戶可能不會產生大量的數據。
沒有隔離和共享集群共享,因為這對單個用戶集群。
基本批ETL
簡單的批ETL作業,不需要廣泛的轉換,如連接或聚合,通常受益於compute-optimized集群。對於這些類型的工作負載,任何集群在下圖可能是可以接受的。
Compute-optimized工人類型推薦;這些會便宜一些,這些工作負載可能會不需要大量內存或者存儲。
使用池可能會提供一個有利於集群支持簡單的ETL作業減少集群啟動時間和減少總管道運行時在運行工作。然而,由於這些類型的工作負載通常如期運行工作的集群隻運行足夠長的時間完成工作,使用池可能不提供好處。
可能不是有用有以下特點:
三角洲緩存,因為重讀數據出乎意料的時候。
自動終止可能不是必需的,因為這些可能會安排工作。
自動定量不推薦,因為計算和存儲應預先配置的用例。
任何隔離共享,共享集群僅供多個用戶和不利益集群運行一個工作。
複雜的批ETL
更複雜的ETL作業,如處理,要求工會和跨多個表連接,可能工作最好當你可以打亂的數據量最小化。因為減少工人在集群將有助於最小化打亂,你應該考慮一個更小的集群和集群在下圖更大的集群和集群D。
複雜的轉換可以計算密集型,因此對於某些工作負載達到一個最優的內核數可能需要額外的節點添加到集群中。
喜歡簡單的ETL作業compute-optimized工人類型推薦;這些會便宜一些,這些工作負載可能會不需要大量內存或者存儲。也喜歡簡單ETL作業,主要考慮集群特性是池減少集群啟動時間和減少總管道運行時在運行工作。
可能不是有用有以下特點:
三角洲緩存,因為重讀數據出乎意料的時候。
自動終止可能不是必需的,因為這些可能會安排工作。
自動定量不推薦,因為計算和存儲應預先配置的用例。
任何隔離共享,共享集群僅供多個用戶和不利益集群運行一個工作。
培訓機器學習模型
由於初始迭代訓練機器學習模型往往實驗,小集群如集群是一個不錯的選擇。更小的集群也將減少震蕩的影響。
如果穩定性問題,或者對於更高級的階段,一個更大的集群,如集群B或C可能是一個不錯的選擇。
不推薦等大型集群的集群D節點之間移動數據的開銷。
建議工人類型存儲優化三角洲緩存啟用占重複讀取相同的數據和訓練數據啟用高速緩存。如果計算和存儲選項提供的存儲優化節點是不夠的,考慮GPU優化節點。一個可能的缺點是缺乏三角洲與這些節點緩存支持。
建議分析工作負載的其他功能包括:
啟用自動終止,以確保集群經過一段時間的不活動終止。
使用池,這將允許限製集群預先核準的實例類型,確保一致的集群配置。
功能可能不是有用:
自動定量,因為緩存的數據可能會丟失當節點作為集群中移除尺度。此外,典型的機器學習工作往往會消耗所有可用的節點,在這種情況下,自動定量將提供任何好處。
存儲自動定量,因為這個用戶可能不會產生大量的數據。
沒有隔離和共享集群共享,因為這對單個用戶集群。
常見的場景
以下部分提供額外的建議為常見的集群配置集群使用模式:
多個用戶運行數據分析和特殊處理。
專門的用例和機器學習。
支持批處理作業。
多用戶群
場景
您需要提供多個用戶訪問數據運行數據分析和特別查詢。集群使用可能會隨著時間變化而波動,大多數工作不是很資源密集型的。大多數用戶需要隻讀訪問數據和要執行的分析或通過一個簡單的用戶界麵創建儀表板。
集群配置的推薦方法是集群中的節點配置的混合方法以及自動定量。混合的方法是隨需應變的實例的數量和定義搶占式實例集群和啟用自動定量之間的最小和最大數量的實例。
這個集群總是可用的和共享的默認用戶屬於一個組。啟用自動定量上下允許集群規模取決於負載。
用戶沒有訪問集群啟動/停止,但最初的隨需應變的實例是立即回應用戶查詢。如果用戶查詢需要更多容量,自動定量自動規定更多的節點(主要是現貨實例),以適應工作負載。
磚有其他的特性來進一步提高多租戶的用例:
在交互工作流處理大型查詢描述一個過程來自動管理查詢,永遠不會結束。
任務搶占提高長期工作和較短的工作如何協同工作。
這種方法使總成本下降:
使用共享的集群模型。
使用按需和現貨實例。
使用自動定量來避免支付充分利用集群。
專門的工作負載
場景
您需要提供集群為專門的用例或團隊在您的組織,例如,數據科學家運行複雜的數據探索和機器學習算法。一個典型的集群模式,用戶需要在短時間內運行他們的分析。
這種工作負載的最佳方法是創建集群政策與預定義的默認配置,固定的,和設置範圍。這些設置可能包括實例的數量、實例類型,位置和隨需應變的情況下,角色,圖書館要安裝,等等。使用集群政策允許用戶提供更高級的需求快速自旋向上的集群,他們可以根據需要配置為用例和實施成本和符合政策。
這種方法為用戶提供了更多的控製,同時保持控製成本的能力,根據集群配置。這也允許您配置集群為不同的用戶組和權限訪問不同的數據集。
這種方法的一個缺點是,用戶必須使用管理員的任何更改集群,如配置,安裝庫,等等。