當您的業務量需求不斷波動時,建議您開啟彈性伸縮功能并配置相應的伸縮規則,以便于E-MapReduce(簡稱EMR)可以按業務量波動增加或減少Task節點。確保作業完成的同時,可以節省成本。本文為您介紹如何在EMR控制臺配置彈性伸縮。
前提條件
已新建Hadoop集群,創建詳情請參見創建集群。
注意事項
彈性伸縮配置可以指定伸縮的節點的硬件規格。您可以在彈性伸縮功能未開啟的情況下配置具體實例規格。如果特殊情況確實需要修改,可以關閉彈性伸縮功能后,再次開啟。
系統會根據您選擇的vCPU和內存規格,自動匹配出滿足條件的實例,并顯示在備選實例列表中。您需要選中備選的實例,以便集群按照已選的實例規格進行伸縮。
為避免由于ECS庫存不足造成的彈性伸縮失敗,您最多可以選擇3種ECS實例。
無論是選擇高效云盤還是SSD云盤,數據盤最小設置為40 GB。
按負載伸縮是基于云監控服務(CMS)產品功能提供的一種動態管理伸縮組的方式。在您成功配置彈性伸縮規則后,系統將自動在云監控服務體系內構建相應的報警規則。為確保EMR彈性伸縮活動的平穩運行,請勿對系統自動生成的報警規則進行修改、刪除或禁用等操作。
操作步驟
進入彈性伸縮頁面。
在頂部菜單欄處,根據實際情況選擇地域和資源組。
在EMR on ECS頁面,單擊目標集群的集群ID。
單擊上方的彈性伸縮頁簽。
新建彈性伸縮組。
在伸縮配置頁簽,單擊新建彈性伸縮機器組。
說明彈性伸縮組只能在彈性伸縮模塊下進行管理和配置,無法在節點管理模塊下進行操作。
在新增彈性伸縮機器組對話框中,輸入機器組名稱,單擊確定。
在伸縮配置頁簽,單擊目標機器組操作列的配置規則。
在彈性伸縮配置面板的基礎信息區域,配置相關參數。
參數
描述
最大實例數
彈性伸縮組的Task節點上限。一旦達到上限,即使滿足彈性伸縮的規則,也不會繼續執行彈性伸縮。最大實例數的上限為1000。
最小實例數
彈性伸縮的Task節點下限。如果彈性伸縮規則中設置的增加或減少Task節點數小于此處設置的最小實例數,則在首次執行時,集群會以最小節點數為準進行伸縮。
例如,您設置彈性擴容規則為每天零點動態添加1個節點,最小節點數為3,則系統在第一天的零點時會添加3個節點,以滿足最小節點數的要求。
優雅下線
您可以設置超時時間,下線YARN上作業所在的Task節點。如果Task節點沒有運行YARN上的作業或者作業運行超出您設置的超時時間,則下線Task節點。超時時間最大值為3600秒。
重要開啟優雅下線時,請先將YARN配置項yarn.resourcemanager.nodes.exclude-path的值修改為/etc/ecm/hadoop-conf/yarn-exclude.xml。
修改超時時間后,請在業務低峰期重啟YARN ResourceManager,以使修改后的超時時間生效。
在彈性伸縮配置面板的實例區域,選擇實例方式、計費類型和實例規格。
單一計費模式
系統會根據您選擇的vCPU和內存規格,自動匹配出滿足條件的實例,并顯示在實例規格區域。您需要選中實例規格區域的實例,以便集群按照已選的實例規格進行伸縮。單一計費模式支持以下兩種計費類型:
按量付費
勾選實例的順序決定顯示節點的優先級,勾選實例后下方區域會顯示每一個實例每小時的價格(包含EMR實例價格和ECS實例價格)。
搶占式實例
重要當您的作業對SLA(Service Level Agreement)要求較高時,請慎用該實例。因為競價失敗等原因會導致搶占式實例被釋放,所以請謹慎使用搶占式實例。
勾選實例的順序決定顯示節點的優先級,每一個實例后會顯示該實例在按量付費時每小時的價格。您還可以設置每臺實例的上限價格,當滿足規則時顯示該類實例。搶占式實例詳情,請參見什么是搶占式實例。
成本優化模式
該模式下,您可以制定更詳細的成本控制策略,在成本和穩定性之間進行調整和權衡。
參數
描述
組內最小按量節點數量
彈性伸縮組需要的按量實例的最小個數,當伸縮組中按量實例個數小于該值時,將優先創建按量實例。
按量節點所占比例
彈性伸縮組內最小按量節點數量滿足之后,創建實例中按量實例所占的比例。
最低價的多個實例規格
指定最低價的多個實例規格種類數。當創建搶占實例時,將在這些規格種類中進行均衡分布。最大值為3。
搶占實例補償
是否開啟競價實例的補償機制。開啟搶占實例補償后,在競價實例被回收前5分鐘左右,將主動替換掉當前競價實例。
當您不指定組內最小按量節點數量、按量節點所占比例和最低價的多個實例規格參數時,您創建的是普通成本優化伸縮組。否則,您創建的是成本優化混合實例伸縮組。成本優化混合實例伸縮組與普通成本優化伸縮組在接口和功能方面是完全兼容的。
對于成本優化混合實例伸縮組,您可以通過合理制定混合實例策略,以實現與普通成本優化伸縮組完全相同的行為。例如:
普通成本優化伸縮組創建的全為按量實例
指定組內最小按量節點數量=0,按量節點所占比例=100,最低價的多個實例規格=1。
普通成本優化伸縮組優先創建競價實例
指定組內最小按量節點數量=0,按量節點所占比例=0,最低價的多個實例規格=1。
說明成本優化模式詳情,請參見AutoScaling成本優化模式升級--混合實例策略。
在彈性伸縮配置面板的觸發方式區域,選擇觸發方式和規則。
規定時間伸縮:如果Hadoop集群計算量在一定的周期內存在明顯的波峰和波谷,則您可以設置在每天、每周或每月的固定時間段擴展一定量的Task節點來補充計算能力,這樣在保證作業完成的同時,也可以節省成本。
伸縮規則分為擴容規則和縮容規則,本示例以擴容規則為例介紹。集群關閉彈性伸縮功能后,所有規則會被清空,再次開啟彈性伸縮功能時,需要重新配置伸縮規則。
參數
描述
規則名稱
在同一個集群中,伸縮規則名稱(包括擴容規則和縮容規則)不允許重復。
時間執行規則
重復執行:您可以選擇每天、每周或每月的某一特定時間點執行一次彈性伸縮動作。
只執行一次:集群在指定的時間點執行一次彈性伸縮動作。
執行時間
選擇規則執行的時間。
規則有效期
選擇規則的有效期。
重試過期時間(秒)
彈性伸縮在到達指定時間時可能由于各種原因不能執行,通過設置重試過期時間,系統會在該時間范圍內每隔30秒嘗試執行一次,直到在滿足條件時執行伸縮。設置范圍為0~21600秒。
假設在指定時間段需要進行彈性伸縮動作A,如果有其他彈性伸縮動作B正在執行或正處在冷卻期,則動作A無法執行。在您設置的重試過期時間內,每隔30秒會重試一次,嘗試執行A,一旦條件滿足,集群會立刻執行彈性伸縮。
調整臺數
規則被觸發時,集群每次增加Task節點數量。
冷卻時間(秒)
每次彈性伸縮動作執行完成,到可以再次進行彈性伸縮的時間間隔。在冷卻時間內,不會發生彈性伸縮動作。
規定負載伸縮:如果您無法準確的預估大數據計算的波峰和波谷,則可以使用按負載伸縮配置的策略。
伸縮規則分為擴容規則和縮容規則,本示例以擴容規則為例介紹。集群關閉彈性伸縮功能后,所有規則會被清空,再次開啟彈性伸縮功能時,需要重新配置伸縮規則。切換伸縮策略時(例如,從按負載伸縮切換到按時間伸縮),原策略下的伸縮規則處于失效狀態,不會被觸發,但已經擴容的節點會繼續保留,不會被釋放。
參數
描述
規則名稱
在同一個集群中,伸縮規則名稱(包括擴容規則和縮容規則)不允許重復。
集群負載指標
在YARN的負載指標中獲取,詳細信息請參見Hadoop官方文檔。
E-MapReduce彈性伸縮指標與YARN負載指標的對應關系,請參見E-MapReduce彈性伸縮指標與YARN所屬服務的對應關系。
統計周期
您選定的集群負載指標在一個統計周期內,按照選定的聚合維度(平均值、最大值和最小值),達到觸發閾值為一次觸發。
統計規則
重復幾次后擴容
負載指標聚合后達到閾值觸發的次數,達到該次數后觸發集群彈性伸縮的動作。
擴容(臺)
規則被觸發時,集群每次執行增加的Task節點數量。
冷卻時間(秒)
每次彈性伸縮動作執行完成,到可以再次進行彈性伸縮的時間間隔。在冷卻時間內,即使滿足彈性伸縮條件也不會發生彈性伸縮動作。即忽略本次在冷卻時間內觸發的彈性伸縮動作,直到下一次滿足伸縮條件且不在冷卻時間內再執行。
單擊保存。
您可以根據實際情況,開啟彈性伸縮。開啟彈性伸縮詳情,請參見開啟或關閉彈性伸縮(僅Hadoop集群類型)。
E-MapReduce彈性伸縮指標與YARN所屬服務的對應關系
E-MapReduce彈性伸縮指標 | 所屬服務 | 說明 |
YARN.AvailableVCores | YARN | 可供分配的虛擬核數。 |
YARN.PendingVCores | YARN | 待分配的虛擬核數。 |
YARN.AllocatedVCores | YARN | 已分配的虛擬核數。 |
YARN.ReservedVCores | YARN | 預留的虛擬核數。 |
YARN.AvailableMemory | YARN | 可供分配的內存量。單位:MB。 |
YARN.PendingMemory | YARN | 待分配的內存量。單位:MB。 |
YARN.AllocatedMemory | YARN | 已分配的內存量。單位:MB。 |
YARN.ReservedMemory | YARN | 預留的內存量。單位:MB。 |
YARN.AppsRunning | YARN | 運行中的任務數。 |
YARN.AppsPending | YARN | 掛起的任務數。 |
YARN.AppsKilled | YARN | 終止的任務數。 |
YARN.AppsFailed | YARN | 失敗的任務數。 |
YARN.AppsCompleted | YARN | 完成的任務數。 |
YARN.AppsSubmitted | YARN | 提交的任務數。 |
YARN.AllocatedContainers | YARN | 已分配的容器數。 |
YARN.PendingContainers | YARN | 待分配的容器數。 |
YARN.ReservedContainers | YARN | 預留的容器數。 |
YARN.MemoryAvailablePrecentage | YARN | 剩余內存的百分比 |
YARN.ContainerPendingRatio | YARN | 待分配的容器數與已分配的容器數的比率 |