當您的叢集負載長時間處於低水平且大量叢集資源處於閑置狀態時,您可以考慮對叢集的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節點群組進行縮容。
在YARN ResourceManager的Application Queues頁面,可查看各Partition(如DEFAULT_PARTITION、batch)下隊列的記憶體(memory)和虛擬核心數(vCores)分配及使用方式,並通過圖例中的Capacity、Used、Max Capacity等指標判斷隊列資源是否空閑。
-
在Nodes頁面,按照Nodes Address進行排序,可以快速找出哪個節點可用記憶體較多,此時可以考慮釋放該節點。
如果您的叢集是舊版Hadoop叢集且有以下情況,需要特別注意:
-
如果您的叢集為非高可用叢集,請不要下線emr-worker-1和emr-worker-2 節點。
-
如果您的叢集為高可用叢集,但Master節點數為2,請不要下線emr-worker-1節點。
步驟一:查看下線節點服務
在下線節點從而對Core節點群組或Task節點群組進行縮容時,需要先將對應節點的相關元件服務下線,才能釋放相應的節點資源。可以在控制台的节点管理頁面查看節點部署組件情況。
在節點管理頁面展開目標節點群組,找到目標節點,單擊該節點行右側的組件數量資訊表徵圖(如12個組件),即可在彈出的浮層中查看該節點上已部署的所有組件及其運行狀態。
步驟二:節點群組件服務下線
如果您選擇的下線節點已安裝以下元件服務,請在釋放節點之前對已安裝的這些服務元件先行進行下線操作,否則可能會導致任務調度失敗及資料安全的問題。
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;MySQL [(none)]> show backends; +----------+-----------------+------------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+------------------------+-----------+------------------+---------------+---------------+---------+---------+----------+--------+---------------+----------------------------------------------------+-------------------+-------------+----------+ | BackendId | Cluster | IP | HeartbeatPort | BePort | HttpPort | BrpcPort | LastStartTime | LastHeartbeat | Alive | SystemDecommissioned | ClusterDecommissioned | TabletNum | DataUsedCapacity | AvailCapacity | TotalCapacity | UsedPct | MaxDiskUsedPct | ErrMsg | Version | Status | DataTotalCapacity | DataUsedPct | CpuCores | +----------+-----------------+------------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+------------------------+-----------+------------------+---------------+---------------+---------+---------+----------+--------+---------------+----------------------------------------------------+-------------------+-------------+----------+ | 10049 | default_cluster | 192.16xxx | 9050 | 9060 | 18040 | 8060 | 2022-11-29 15:47:28 | 2022-11-29 16:09:48 | true | true | false | 0 | .000 | 312.400 GB | 312.978 GB | 0.18 % | 0.19 % | | 2.3.2-dbc89ae | {"xxxcessReportTabletsTime":"2022-11-29 16:09:28"} | 312.400 GB | 0.00 % | 4 | | 10002 | default_cluster | 192.16xxx | 9050 | 9060 | 18040 | 8060 | 2022-11-29 15:29:07 | 2022-11-29 16:09:48 | true | false | false | 10 | .000 | 312.399 GB | 312.978 GB | 0.19 % | 0.19 % | | 2.3.2-dbc89ae | {"xxxcessReportTabletsTime":"2022-11-29 16:09:08"} | 312.399 GB | 0.00 % | 4 | | 10003 | default_cluster | 192.16xxx | 9050 | 9060 | 18040 | 8060 | 2022-11-29 15:29:07 | 2022-11-29 16:09:48 | true | false | false | 10 | .000 | 312.399 GB | 312.978 GB | 0.19 % | 0.19 % | | 2.3.2-dbc89ae | {"xxxcessReportTabletsTime":"2022-11-29 16:09:07"} | 312.399 GB | 0.00 % | 4 | | 10004 | default_cluster | 192.16xxx | 9050 | 9060 | 18040 | 8060 | 2022-11-29 15:29:07 | 2022-11-29 16:09:48 | true | false | false | 10 | .000 | 312.399 GB | 312.978 GB | 0.19 % | 0.19 % | | 2.3.2-dbc89ae | {"xxxcessReportTabletsTime":"2022-11-29 16:09:08"} | 312.399 GB | 0.00 % | 4 | +----------+-----------------+------------+---------------+--------+----------+----------+---------------------+---------------------+-------+----------------------+------------------------+-----------+------------------+---------------+---------------+---------+---------+----------+--------+---------------+----------------------------------------------------+-------------------+-------------+----------+ 4 rows in set (0.01 sec)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。