背景信息
在大數據應用,尤其是實時分析處理數據的場景中,常常需要根據數據量的變化動態調整集群節點數量以增減資源。MRS的彈性伸縮規則功能支持根據集群負載對集群的Task節點進行彈性伸縮。如果數據量是按照周期進行有規律的變化,用戶可以按照固定時間段來自動調整Task節點數量范圍,從而在數據量變化前提前完成集群的擴縮容。
- 彈性伸縮規則:根據集群實時負載指標對Task節點數量進行調整,數據量變化后觸發擴縮容,有一定的延后性。
- 資源計劃:按時間段設置Task節點數量范圍,若數據量變化存在周期性規律,則可通過資源計劃在數據量變化前提前完成集群的擴縮容,避免出現增加或減少資源的延后。
彈性伸縮規則與資源計劃均可觸發彈性伸縮,兩者必須至少配置其中一種,也可以疊加使用。資源計劃與基于負載的彈性伸縮規則疊加使用可以使得集群節點的彈性更好,足以應對偶爾超出預期的數據峰值出現。
當某些業務場景要求在集群擴縮容之后,根據節點數量的變化對資源分配或業務邏輯進行更改時,手動擴縮容的場景客戶可以登錄集群節點進行操作。對于彈性伸縮場景,MRS支持通過自定義彈性伸縮自動化腳本來解決。自動化腳本可以在彈性伸縮前后執行相應操作,自動適應業務負載的變化,免去了人工操作。同時,自動化腳本給用戶實現個性需求提供了途徑,完全自定義的腳本與多個可選的執行時機基本可以滿足用戶的各項需求,使彈性伸縮更具靈活性。
- 彈性伸縮規則:
?用戶對于一個集群,可以同時設置擴容、縮容最多各5條彈性伸縮規則。
?系統根據用戶的配置順序從前到后依次判斷規則,先擴容,后縮容。請盡量把重要的策略放在前面,以防一次擴容或縮容無法達到預期效果而進行反復觸發。
?比對因子包括大于、大于等于、小于、小于等于。
?集群連續5n(n默認值為1)分鐘持續滿足配置的指標閾值后才能觸發擴容或者縮容。
?每次擴容或者縮容后,存在一個冷卻時間,冷卻時間默認為20分鐘,最小值為0。
?單次擴容或者縮容的節點數,最小1個節點,最大100個節點。
- 資源計劃(按時間段設置Task節點數量范圍):
?用戶可以按時間段設置集群Task節點的最大數量和最小數量,當集群Task節點數不滿足當前時間資源計劃節點范圍要求時,系統觸發擴容或縮容。
?用戶最多可以為一個集群設置5條資源計劃。
?資源計劃周期以天為單位,起始時間與結束時間可以設置為00:00-23:59之間的任意時間點。起始時間早于結束時間至少30分鐘。不同資源計劃配置的時間段不可交叉。
?資源計劃觸發擴容或縮容后,存在10分鐘的冷卻時間,冷卻時間內不會再次觸發彈性伸縮。
?當啟用資源計劃時,在除配置資源計劃配置時間段的其他時間內,集群Task節點數量會被限定在用戶配置的默認節點數量范圍內。
?當不啟用資源計劃時,集群不會將Task節點數量限制在默認節點數量范圍內。
- 自動化腳本:
?用戶可以設置自定義腳本,當彈性伸縮觸發時,在集群節點上自動運行。
?用戶最多可以為一個集群設置10個自動化腳本。
?可以指定自動化腳本某種或多種類型的節點上執行。
?腳本執行時機可以是擴容前、擴容后、縮容前或縮容后。
?使用自動化腳本前,請先將腳本上傳到集群虛擬機或與集群同region的OBS文件系統中。集群虛擬機上的腳本只能在已有節點上執行,若腳本需要在新擴容的節點上執行,請將腳本上傳到OBS。
進入彈性伸縮配置界面
彈性伸縮功能可以創建集群時,在高級配置參數中進行配置,也可以集群創建成功后通過管理控制臺對集群內的Task節點組配置相關規則。
創建集群時配置彈性伸縮
1.登錄MRS管理控制臺。
2.在創建包含有Task類型節點組件的集群時,參考創建自定義集群配置集群軟件配置和硬件配置信息后,在“高級配置”頁簽的彈性伸縮欄,打開對應Task節點類型后的開關按鈕,即可進行彈性伸縮規則及資源計劃的配置或修改。
您可以參考以下場景進行配置:
- 場景1:單獨配置彈性伸縮規則
- 場景2:單獨使用資源計劃
- 場景3:彈性伸縮規則與資源計劃疊加使用
為已有集群配置彈性伸縮
1.登錄MRS管理控制臺。
2.選擇“集群列表 > 現有集群”,選中一個運行中的集群并單擊集群名稱。進入集群詳情頁面。
3.在“節點管理”頁簽Task類型節點組的“操作”列單擊“彈性伸縮”,即可進入“彈性伸縮”頁面。
說明
彈性伸縮僅用于Task節點組,當集群內沒有Task節點時,先單擊“配置Task節點”增加Task節點后再繼續配置。
對于MRS 3.x及之后版本,“配置Task節點”僅適用于分析集群、流試集群和混合集群。MRS 3.x及之后版本的自定義集群請參考 節點管理章節 [擴容集群](//www.daliqc.cn/document/10000070/10121635)中的添加Task節點添加task類型的節點。
4.打開彈性伸縮開關按鈕,即可進行彈性伸縮規則及資源計劃的配置或修改。
您可以參考以下場景進行配置:
- 場景1:單獨配置彈性伸縮規則
- 場景2:單獨使用資源計劃
- 場景3:彈性伸縮規則與資源計劃疊加使用
場景1:單獨配置彈性伸縮規則
例如業務場景如下:
需要根據Yarn資源使用情況動態調整節點數,在Yarn可用內存低于20%時擴容5個節點,可用內存高于70%時縮容5個節點。Task節點組最高不超過10個節點,最低不少于1個節點。
1.進入彈性伸縮配置界面后,配置彈性伸縮規則。
- 配置節點默認范圍
輸入Task實例彈性伸縮的數量范圍,此約束應用于所有擴容縮容規則,取值范圍為0~500。
例如本業務場景中,配置為1~10。
- 配置彈性伸縮規則
需要配置擴容或者縮容規則,否則彈性伸縮將不會啟用。
a. 規則類型選擇“擴容”或者“縮容”。
b. 單擊“添加規則”,進入規則編輯頁面。
c. 配置“規則名稱”、“如果”、“持續”、“添加”、“冷卻時間”。
d. 單擊“確定”。
您可以在彈性伸縮頁面,擴容或者縮容區域查看、編輯或刪除配置的規則。您可以繼續添加并配置多條規則。
2.(可選)配置自動化腳本。
在“高級配置”項選擇“現在配置 > 添加”或者單擊“添加自動化腳本”按鈕,進入“自動化腳本”配置頁面。
MRS 3.x版本集群不支持該操作。
a.配置“名稱”、“腳本路徑”、“執行節點類型”、“參數”、“執行時機”、“失敗操作”。參數詳情請參考下表 自動化腳本配置說明。
b.單擊“確定”保存自動化腳本配置。
3.單擊“確定”,完成彈性伸縮規則設置。
說明如果是為已有集群配置彈性伸縮的場景,需勾選“我同意授權MRS服務根據以上策略自動進行節點擴容/縮容操作”。
場景2:單獨使用資源計劃
當數據量以天為周期有規律的變化,并且希望在數據量變化前提前完成集群的擴縮容,可以使用MRS的資源計劃配置在規定時間內按計劃調整Task節點數量。
例如:
某項實時處理業務數據量在每天7:00-13:00出現高峰,其他時間保持平穩低水平。假設我們使用MRS流式集群來處理該業務數據,在7:00-13:00時,為應對數據量高峰需要5個Task節點的資源,其他時間只需要2個Task節點。
1.進入彈性伸縮配置界面后,配置資源計劃。
a.節點數量范圍的“默認范圍”設置為“2-2”,表示除資源計劃規定時間范圍外,其他時間Task節點數量固定為2個。
b.單擊默認范圍下方的“配置指定時間段的節點數量范圍”或者“添加資源計劃”。
c.配置“時間范圍”和“節點數量范圍”。
例如此處“時間范圍”設置為“07:00-13:00”,“節點數量范圍”設置為“5-5”,表示在該時間范圍內,Task節點數量固定為5個。
參數詳情請參考下表 資源計劃配置項說明,可以單擊“配置指定時間段的節點數量范圍”配置多條資源計劃。

說明
如果沒有配置指定時間段的節點數量范圍,則節點數量范圍以“默認范圍”為準。
如果配置了指定時間段的節點數量范圍,則在這個時間范圍內,以配置的“節點數量范圍”為準。不在配置的時間范圍時,則以“默認范圍”為準。
2.(可選)配置自動化腳本。
在“高級配置”項選擇“現在配置 > 添加”或者單擊“添加自動化腳本”按鈕,進入“自動化腳本”配置頁面。
MRS 3.x版本集群不支持該操作。
a.配置“名稱”、“腳本路徑”、“執行節點類型”、“參數”、“執行時機”、“失敗操作”。參數詳情請參考下方表:自動化腳本配置說明。
b.單擊“確定”保存自動化腳本配置。
3.單擊“確定”,完成彈性伸縮規則設置。

說明如果是為已有集群配置彈性伸縮的場景,需勾選“我同意授權MRS服務根據以上策略自動進行節點擴容/縮容操作”。
場景3:彈性伸縮規則與資源計劃疊加使用
假如數據量并非非常平穩,有可能出現超出預期的波動,因此并不能保證固定Task節點范圍一定可以滿足業務場景,我們需要在資源計劃的基礎上根據實時負載對Task節點數量進行調整。
例如業務場景如下:
某項實時處理業務數據量在每天7:00-13:00出現規律性變化,但是數據量變化并非非常平穩。假設在7:00-13:00期間,需要Task節點的數量范圍是5-8個,其他時間需要Task節點數量外圍為2-4個。因此可以在資源計劃的基礎上,設置基于負載的彈性伸縮規則,以實現當數據量超出預期后,Task節點數量可以在資源計劃規定的范圍內根據負載情況進行浮動,但不會超出該規定范圍。資源計劃觸發時,會以變化最小的方式使節點數量滿足計劃規定范圍,即如果需要擴容則擴容到計劃節點數量范圍的下限,如果需要縮容則縮容到計劃節點數量范圍的上限。
1.進入彈性伸縮配置界面后,配置彈性伸縮規則。
- 節點數量范圍的默認范圍:
輸入Task實例彈性伸縮的數量范圍,此約束應用于所有擴容縮容規則。
例如本場景中,配置為2~4個。
- 伸縮規則:
需要配置擴容或者縮容,否則彈性伸縮將不會啟用。
a. 規則類型選擇“擴容”或者“縮容”。
b. 單擊“添加規則”,進入“添加規則”頁面。
c. 配置“規則名稱”、“如果”、“持續”、“添加”、“冷卻時間”。
d. 單擊“確定”。
您可以在彈性伸縮頁面,擴容或者縮容區域查看配置的規則。
2.配置資源計劃。
a.單擊節點默認范圍下方的“配置指定時間段的節點數量范圍”或者“添加資源計劃”。
b.配置“時間范圍”和“節點數量范圍”。
例如此處“時間范圍”設置為“07:00-13:00”,“節點數量范圍”設置為“5~8”。
參數詳情請參考下表 資源計劃配置項說明,可以單擊“配置指定時間段的節點數量范圍”或者“添加資源計劃”按鈕配置多條資源計劃。
說明
如果沒有配置指定時間段的節點數量范圍,則節點數量范圍以“默認范圍”為準。
如果配置了指定時間段的節點數量范圍,則在這個時間范圍內,以配置的“節點數量范圍”為準。不在配置的時間范圍時,則以“默認范圍”為準。
3.(可選)配置自動化腳本。
在“高級配置”項選擇“現在配置 > 添加”或者單擊“添加自動化腳本”按鈕,進入“自動化腳本”配置頁面。
MRS 3.x版本集群不支持該操作。
a.配置“名稱”、“腳本路徑”、“執行節點類型”、“參數”、“執行時機”、“失敗操作”。參數詳情請參考下方表格 自動化腳本配置說明。
b.單擊“確定”保存自動化腳本配置。
4.單擊“確定”,完成彈性伸縮規則設置。
說明如果是為已有集群配置彈性伸縮的場景,需勾選“我同意授權MRS服務根據以上策略自動進行節點擴容/縮容操作”。
相關信息
在添加規則時,可以參考下表配置相應的指標。
彈性伸縮指標列表
集群類型 指標名稱 數值類型 說明 流式集群
StormSlotAvailable
整型
Storm組件的可用slot數。
取值范圍為[0~2147483646]。
StormSlotAvailablePercentage
百分比
Storm組件可用slot百分比。是可用slot數與總slot數的比值。
取值范圍為[0~100]。
StormSlotUsed
整型
Storm組件的已用slot數。
取值范圍為[0~2147483646]。
StormSlotUsedPercentage
百分比
Storm組件已用slot百分比。是已用slot數與總slot數的比值。
取值范圍為[0~100]。
StormSupervisorMemAverageUsage
整形
Storm組件Supervisor的內存平均使用量。
取值范圍為[0~2147483646]。
StormSupervisorMemAverageUsagePercentage
百分比
Storm組件Supervisor進程使用的內存占系統總內存的平均百分比。
取值范圍[0 ~ ? 100]。
StormSupervisorCPUAverageUsagePercentage
百分比
Storm組件Supervisor進程使用的CPU占系統總CPU的平均百分比。
取值范圍[0 ~ ? 6000]。
分析集群
YARNAppPending
整型
YARN組件掛起的任務數。
取值范圍為[0~2147483646]。
YARNAppPendingRatio
比率
YARN組件掛起的任務數比例。是YARN掛起的任務數與YARN運行中的任務數比值。
取值范圍為[0~2147483646]。
YARNAppRunning
整型
YARN組件運行中的任務數。
取值范圍為[0~2147483646]。
YARNContainerAllocated
整型
YARN組件中已分配的container個數。
取值范圍為[0~2147483646]。
YARNContainerPending
整型
YARN組件掛起的container個數。
取值范圍為[0~2147483646]。
YARNContainerPendingRatio
比率
YARN組件掛起的container比率。是掛起的container數與運行中的container數的比值。
取值范圍為[0~2147483646]。
YARNCPUAllocated
整型
YARN組件已分配的虛擬CPU核心數。
取值范圍為[0~2147483646]。
YARNCPUAvailable
整型
YARN組件可用的虛擬CPU核心數。
取值范圍為[0~2147483646]。
YARNCPUAvailablePercentage
百分比
YARN組件可用虛擬CPU核心數百分比。是可用虛擬CPU核心數與總虛擬CPU核心數比值。
取值范圍為[0~100]。
YARNCPUPending
整型
YARN組件掛起的虛擬CPU核心數。
取值范圍為[0~2147483646]。
YARNMemoryAllocated
整型
YARN組件已分配內存大小。單位為MB。
取值范圍為[0~2147483646]。
YARNMemoryAvailable
整型
YARN組件可用內存大小。單位為MB。
取值范圍為[0~2147483646]。
YARNMemoryAvailablePercentage
百分比
YARN組件可用內存百分比。是YARN組件可用內存大小與YARN組件總內存大小的比值。
取值范圍為[0~100]。
YARNMemoryPending
整型
YARN組件掛起的內存大小。
取值范圍為[0~2147483646]。
說明
上表中指標數值類型為百分比或比率時,有效數值可精確到百分位。其中百分比類型指標數值為去除百分號(%)后的小數值,如16.80即代表16.80%。
混合集群的支持分析集群和流式集群的所有指標。
在添加資源計劃時,可以參考下表配置相應的參數。
資源計劃配置項說明
| 配置項 | 說明 |
|---|---|
| 時間范圍 | 資源計劃的起始時間和結束時間,精確到分鐘,取值范圍[00:00, 23:59]。例如資源計劃開始于早上8:00,結束于10:00,則配置為8:00-10:00。結束時間必須晚于開始時間至少30分鐘。 |
| 節點數量范圍 | 資源計劃內的節點數量上下限,取值范圍[0,500],在資源計劃時間內,集群Task節點數量小于最小節點數時,彈性伸縮會將集群Task節點一次性擴容到最小節點數。在資源計劃時間內,集群Task節點數量大于最大節點數時,彈性伸縮會將集群Task節點一次性縮容到最大節點數。最小節點數必須小于或等于最大節點數。 |

說明
當啟用資源計劃時,彈性伸縮配置中的“默認節點數量范圍”將在資源計劃外的時間段內強制生效。例如“默認節點數量范圍”配置為1-2,配置資源計劃:08:00-10:00之間節點數量范圍為4-5,則在一天中的非資源計劃時間段(0:00-8:00以及10:00-23:59)內,Task節點會被強制限制在1個到2個中間,若節點數量大于2則觸發自動縮容,若節點數量小于1則觸發自動擴容。
當不啟用資源計劃時,節點數量范圍的“默認范圍”會在全部時間范圍生效,如果節點數量不在“節點數量范圍”的默認范圍,主動增減Task節點數量到默認范圍內。
資源計劃間時間段不可交叉,時間段交叉意為某個時間點存在兩個生效的資源計劃,例如配置資源計劃1在08:00-10:00生效,資源計劃2在09:00-11:00生效,則兩個資源計劃存在時間段交叉,交叉時間段09:00-10:00。
資源計劃不能跨天配置,例如如果要配置23:00至次日01:00的資源計劃,請配置時間段為23:00-00:00和00:00-01:00的兩個資源計劃。
在添加自動化腳本時,可以參考下表配置相應參數。
自動化腳本配置說明
配置項 說明 名稱
自動化腳本的名稱。
只能由數字、英文字符、空格、中劃線和下劃線組成,且不能以空格開頭。
可輸入的字符串長度為1~64個字符。
說明
同一集群內,不允許配置相同的名稱。不同集群之間,可以配置相同的名稱。
腳本路徑
腳本的路徑。路徑可以是OBS文件系統的路徑或虛擬機本地的路徑。
l? ? OBS文件系統的路徑,必須以s3a://開頭,以.sh結尾。例如:s3a://mrs-samples/xxx.sh
l? ? 虛擬機本地的路徑,腳本所在的路徑必須以‘/’開頭,以.sh結尾。例如,安裝Zepelin的示例腳本路徑如下:/opt/bootstrap/zepelin/zepelin_install.sh
執行節點類型
選擇自動化腳本所執行的節點類型。
說明
l? ? 如果選擇Master節點,您可以通過開關選擇是否只在Active Master節點執行此腳本。
l? ? 如果選擇開啟此功能,表示只在Active Master節點上執行。如果選擇關閉,表示在所有Master節點執行。默認關閉。
參數
自動化腳本參數,支持通過傳入以下預定義變量獲得彈性伸縮相關信息:
l? ? ${mrs_scale_node_num} :彈性伸縮節點數量,總是正數
l? ? ${mrs_scale_type} :彈性伸縮類型,擴容為“scale_out”,縮容為“scale_in”
l? ? ${mrs_scale_node_hostnames} :彈性伸縮節點的主機名,多個主機名之間以“,”隔開
l? ? ${mrs_scale_node_ips} :彈性伸縮節點的IP,多個IP之間以“,”隔開
l? ? ${mrs_scale_rule_name}:觸發彈性伸縮的規則名,如果是資源計劃則為“resource_plan”
執行時機
選擇自動化腳本執行的時間。支持“擴容前”、“擴容后”、“縮容前”、“縮容后”四種類型。
說明
假設執行節點類型中包含Task節點:
l? ? 執行時機為擴容前的腳本不會在將要擴容出的Task節點上執行。
l? ? 執行時機為擴容后的腳本會在擴容出的Task節點上執行。
l? ? 執行時機為縮容前的腳本會在即將被刪除的Task節點上執行。
l? ? 執行時機為縮容后的腳本不會在已經被刪除的Task節點上執行。
失敗操作
該腳本執行失敗后,是否繼續執行后續腳本和擴縮容操作。
說明
l? ? 建議您在調試階段設置為“繼續”,無論此腳本是否執行成功,則集群都能繼續擴縮容操作。
l? ? 若腳本執行失敗,請到集群虛擬機機的“/var/log/Bootstrap”路徑下查看失敗日志。
l? ? 由于縮容成功不可回滾,縮容后執行的腳本失敗操作只能選擇“繼續”。

說明自動化腳本只在彈性伸縮時觸發,手動調整集群節點時不會運行。