當您的叢集負載長時間處於低水平且大量叢集資源處於閑置狀態時,您可以考慮對叢集的Core節點群組或Task節點群組進行縮容,以避免資源的浪費。對於隨用隨付Task節點群組的縮容,可通過控制台進行操作。而其他類型的隨用隨付Core節點群組、訂用帳戶Task節點群組及訂用帳戶Core節點群組的縮容,則需遵循本文所述操作流程。
使用限制
如果您的叢集Core節點的數量與HDFS的副本數量相等,請勿對core節點進行縮容,以避免資料丟失。
如果您的叢集為舊版Hadoop叢集,並且該叢集為高可用(HA)叢集,Master節點數量為2,則請勿縮容emr-worker-1節點(在舊版高可用叢集中,Zookeeper將部署在work-1上)。
注意事項
本文操作均無法復原,一旦開始下線操作後,無法恢複原有狀態。
本文操作為最佳實務操作示範,請結合叢集實際情況進行評估後謹慎操作,避免叢集任務調度失敗以及資料安全的風險。
如何選擇下線節點
縮容節點群組主要依靠下線節點群組內的節點實現。您可以根據叢集服務的負載情況,選擇需要下線的節點。本文提供兩種方法以供您查看叢集資源的使用方式,從而判斷需要下線的節點。
方法一:EMR控制台監控診斷
在指標監控頁面查看YARN-Queues儀錶盤的AvailableVCores指標。如果AvailableVCores指標長時間保持較高水平,說明隊列中存在較多可用核心數,此時可考慮對叢集的Core節點群組或Task節點群組進行縮容。
在指標監控頁面查看YARN-NodeManagers儀錶盤中的AvailableGB指標。如果某個節點的AvailableGB指標長時間保持較高水平,則表明該節點擁有較多可用記憶體,此時可以考慮釋放該節點。
您可以根據您的業務需求結合其他指標作為判斷依據。
方法二:YARN的WEB UI頁面
查看叢集隊列資源使用方式,如果發現隊列資源經常使用得很少,此時可考慮對叢集的Core節點群組或Task節點群組進行縮容。

在Nodes頁面,按照Nodes Address進行排序,可以快速找出哪個節點可用記憶體較多,此時可以考慮釋放該節點。

如果您的叢集是舊版Hadoop叢集且有以下情況,需要特別注意:
如果您的叢集為非高可用叢集,請不要下線emr-worker-1和emr-worker-2 節點。
如果您的叢集為高可用叢集,但Master節點數為2,請不要下線emr-worker-1節點。
步驟一:查看下線節點服務
在下線節點從而對Core節點群組或Task節點群組進行縮容時,需要先將對應節點的相關元件服務下線,才能釋放相應的節點資源。可以在控制台的節點管理頁面查看節點部署組件情況。

步驟二:節點群組件服務下線
如果您選擇的下線節點已安裝以下元件服務,請在釋放節點之前對已安裝的這些服務元件先行進行下線操作,否則可能會導致任務調度失敗及資料安全的問題。
YARN NodeManager下線
進入YARN服務的狀態頁面。
在頂部功能表列處,根據實際情況選擇地區和資源群組。
在EMR on ECS頁面,單擊目的地組群操作列的叢集服務。
在叢集服務頁面,單擊YARN服務地區的狀態。
下線目標節點的NodeManager。
在組件列表中,單擊NodeManager操作列中的。
在彈出的對話方塊中,選擇、輸入執行原因、單擊確定。
在彈出的對話方塊中,單擊確定。
單擊右上方的操作歷史,可以查看操作進度。
HDFS DataNode下線
通過SSH方式登入叢集Master節點,詳見請參見登入叢集。
切換到hdfs使用者,並查看當前NameNode的個數。
sudo su - hdfs hdfs haadmin -getAllServiceState依次ssh到NameNode所在節點,編輯dfs.exclude檔案,加入需要下線的節點,每次建議只新增一台。
舊版Hadoop叢集
touch /etc/ecm/hadoop-conf/dfs.exclude vim /etc/ecm/hadoop-conf/dfs.exclude在vim下輸入
o,新開始一行,填寫下線的DataNode的hostname。emr-worker-3.cluster-xxxxx emr-worker-4.cluster-xxxxx非舊版Hadoop叢集
touch /etc/taihao-apps/hdfs-conf/dfs.exclude vim /etc/taihao-apps/hdfs-conf/dfs.exclude在vim下輸入
o,新開始一行,填寫下線的DataNode的hostname。core-1-3.c-0894dxxxxxxxxx core-1-4.c-0894dxxxxxxxxx
在任一NameNode所在節點,切換到hdfs使用者,執行重新整理命令,HDFS自動啟動下線。
sudo su - hdfs hdfs dfsadmin -refreshNodes確認下線結果。
輸入以下命令,判斷下線過程是否已經完成。
hadoop dfsadmin -report當指定節點的下線Status為Decommissioned,即表示該節點DataNode的資料已經遷移至其他節點,下線操作已經完成。
StarRocks下線
登入叢集並使用用戶端訪問叢集,詳情請參見快速入門。
執行如下命令,通過
DECOMMISSION方式下線BE。ALTER SYSTEM DECOMMISSION backend "be_ip:be_heartbeat_service_port";以下參數請根據叢集實際情況替換。
be_ip:在節點管理頁面找到待縮容BE的內網IP地址。be_heartbeat_service_port:預設是9050,可以通過show backends命令查看。
如果Decommission很慢,您可以使用
DROP方式強制下線BE。重要如果您使用
DROP方式下線BE節點,請確保系統三副本完整。ALTER SYSTEM DROP backend "be_ip:be_heartbeat_service_port";執行以下命令,觀察BE狀態。
show backends;
SystemDecommissioned為true的節點,表示進行中Decommission。當BE節點的TabletNum為0時,系統會清理中繼資料。
如果圖中查看不到BE節點,則說明下線成功。
HBase HRegionServer下線
進入HBase服務的狀態頁面。
在頂部功能表列處,根據實際情況選擇地區和資源群組。
在EMR on ECS頁面,單擊目的地組群操作列的叢集服務。
在叢集服務頁面,單擊HBase服務地區的狀態。
下線目標節點的HRegionServer。
在組件列表中,單擊HRegionServer操作列中的停止。
在彈出的對話方塊中,選擇、輸入執行原因、單擊確定。
在彈出的對話方塊中,單擊確定。
單擊右上方的操作歷史,可以查看操作進度。
HBASE-HDFS DataNode下線
通過SSH方式登入叢集Master節點,詳見請參見登入叢集。
執行以下命令,切換到hdfs使用者並設定環境變數。
sudo su - hdfs export HADOOP_CONF_DIR=/etc/taihao-apps/hdfs-conf/namenode執行以下命令,查看當前NameNode的資訊。
hdfs dfsadmin -report依次ssh到NameNode所在節點,編輯dfs.exclude檔案,加入需要下線的節點,每次建議只新增一台。
touch /etc/taihao-apps/hdfs-conf/dfs.exclude vim /etc/taihao-apps/hdfs-conf/dfs.exclude在vim下輸入
o,新開始一行,填寫下線的DataNode的hostname。core-1-3.c-0894dxxxxxxxxx core-1-4.c-0894dxxxxxxxxx在任一NameNode所在節點,切換到hdfs使用者,執行重新整理命令,HDFS自動啟動下線。
sudo su - hdfs export HADOOP_CONF_DIR=/etc/taihao-apps/hdfs-conf/namenode hdfs dfsadmin -refreshNodes確認下線結果。
輸⼊以下命令,判斷下線過程是否已經完成。
hadoop dfsadmin -report當指定節點的下線Status為Decommissioned,即表示該節點DataNode的資料已經遷移⾄其他節點,下線操作已經完成。
SmartData JindoStorageService下線(舊版Hadoop叢集)
進入SmartData服務的狀態頁面。
在頂部功能表列處,根據實際情況選擇地區和資源群組。
在EMR on ECS頁面,單擊目的地組群操作列的叢集服務。
在叢集服務頁面,單擊SmartData服務地區的狀態。
下線目標節點的JindoStorageService。
在組件列表中,單擊JindoStorageService操作列中的。
在彈出的對話方塊中,選擇、輸入執行原因、單擊確定。
在彈出的對話方塊中,單擊確定。
單擊右上方的操作歷史,可以查看操作進度。
步驟三:釋放下線節點
您需要登入ECS控制台對叢集節點進行操作,如果您是RAM使用者,則需要具有ECS相關許可權,建議授權AliyunECSFullAccess。
進入節點管理頁面。
在頂部功能表列處,根據實際情況選擇地區和資源群組。
在EMR on ECS頁面,單擊目的地組群操作列的節點管理。
在節點管理頁面,單擊待釋放節點的ECS ID。
即可進入ECS控制台。
在ECS控制台上對執行個體進行釋放操作,詳情請參見釋放執行個體。
相關文檔
對於隨用隨付和搶佔式執行個體的Task節點群組的縮容操作,詳情請參見縮容叢集。
如果您的叢集計算資源不足,您可以對叢集的Core節點群組和Task節點群組進行擴容,詳情請參見擴容叢集。
如果您想根據業務需求自動調整叢集計算資源,您可以為節點群組設定託管Auto Scaling或自訂Auto Scaling規則,詳情請參見Auto Scaling。