彈性伸縮是云上大數據平臺的核心能力。通過按需自動擴縮容節點,能夠快速滿足業務的波動,并降低算力成本。本文為您介紹如何根據您的業務特點為集群配置合適的彈性伸縮規則,以滿足您業務量需求不斷波動的情況,并更好的為您節省成本。
前提條件
步驟一:選擇觸發方式
步驟二:配置彈性伸縮規則
如果您設置了多條彈性伸縮規則,當同時滿足條件時,系統將會按照以下內容觸發和執行:
擴容規則優先于縮容規則。
按時間和按負載規則按照觸發先后執行。
按負載伸縮中根據觸發的指標的時間排序。
按負載伸縮中同一觸發指標按照規則創建的順序觸發。
按時間伸縮
按照您業務可能拓展的時間點,選擇重復執行或者只執行一次的執行頻率,配置擴容規則,并在業務結束后對應的時間配置縮容規則。選擇重復執行時,通過配置規則有效期,可以設置規則生效的截止時間,超出有效期后不再觸發伸縮活動。
例如,您的業務在每天的22點開始增加,凌晨4點開始減少,您可以使用按時間伸縮,配置伸縮時間,按天重復執行,每天的22點配置擴容規則,凌晨4點配置縮容規則。
配置項和指標的詳細信息,請參見添加彈性伸縮規則。
按負載伸縮
初始情況下EMR會為您推薦默認常用的擴縮容指標,您需要根據集群指標變化的情況自行配置具體的閾值,配置好具體的數值后,單擊確定,然后單擊保存并應用,在您的業務發生變化后,即會觸發對應規則。
您可以參考以下步驟,配置適合自己集群的伸縮規則。
選擇合適的指標。
在集群監控頁簽的指標監控頁面的Dashboard下拉框中,選擇YARN-HOME,觀測您過去時間的指標隨業務的變化,選擇合適的指標。
指標的選擇要與容量變化成反比,在伸縮活動發生后,實例數量的變化可以降低對應的指標。
例如:配置擴容規則,如果在60秒內yarn_resourcemanager_queue_AppsPending的平均值 >= 1,該條件連續出現1次,則添加1個節點。擴容活動發生后,可以有效地減少隊列中掛起的任務數。
推薦指標如下表所示。
E-MapReduce彈性伸縮指標
所屬服務
說明
yarn_resourcemanager_queue_AvailableMBPercentage
YARN
root隊列可用內存資源所占百分比。
yarn_resourcemanager_queue_AvailableVCores
YARN
root隊列可供分配的虛擬核數。
yarn_resourcemanager_queue_AvailableMB
YARN
root隊列可供分配的內存。單位:MB。
yarn_resourcemanager_queue_AppsPending
YARN
root隊列掛起的任務數。
yarn_resourcemanager_queue_PendingContainers
YARN
root隊列待分配的容器數。
yarn_resourcemanager_queue_AvailableVCoresPercentage
YARN
root隊列可用CPU核數資源所占百分比。
配置一個合適的擴縮容規則。
首次配置時,擴容規則上可以首選pending相關的指標,而縮容規則可以選擇available相關的指標。
每一條規則內,您可以配置多條指標的觸發條件,并指定指標觸發之間的與或關系,可以更細粒度的控制伸縮條件。
為了避免頻繁的擴縮容導致的資源浪費,可以為縮容規則配置一定的冷卻時間。在冷卻時間內,即使滿足伸縮條件也不會發生彈性伸縮活動。
EMR平均擴容時間保持在1.55分鐘,擴容100個節點平均只需要1.83分鐘。因此可以設置擴容規則的冷卻時間在100s~300s左右,保證在新擴出的實例進入使用后,觀測到配置的指標是否有所回落,進而決定是否需要進行下一次的擴容,避免資源的浪費。
為了更快的響應指標的變化,建議時間粒度配置為1分鐘,過大的時間粒度會使用過期的歷史數據觸發伸縮活動,造成不必要的浪費。
擴縮容數量上,根據您現有的節點數量處理的作業能力和期望的業務增長,預估指標回落所需要增加的節點數量進行配置。
配置時間約束(當前規則在一天之內生效的時間范圍),可以組合不同的伸縮規則,在不同時間段配置不同內容的伸縮條件。
設置最大最小值范圍。
當前節點組實例數限制可以約束整體的擴容數量。最大實例數保證不會在負載未滿足的情況下無限擴容,超出您的使用預算。最小實例數能保證有最小數量的實例處理您的業務問題,當您的實例因為某些意外因素被直接釋放后,彈性伸縮組也會為您補充實例,滿足最小數量。
調整規則。
配置規則后,您可以通過觀察一段時間的指標和伸縮活動記錄,適量地調整規則的配置參數。
當伸縮活動過于頻繁,剛擴容的實例頻繁縮掉,并且擴容的實例有所閑置時,可以在規則中使用與條件,增加指標觸發限制來減少擴縮容的頻率,或者適當延長規則的冷卻時間。
當需要反復擴容才能處理您提交的作業或者擴容速度無法及時處理業務作業時,可以適當增加每次規則觸發時擴容的實例數量。