当EMR集群资源过剩时,为了保障HDFS数据的稳定性,您需要对Core节点组进行手动缩容。此外,由于包年包月的Task节点组不支持自动缩容,您也需要进行手动退订。
注意事项
本文操作均不可逆,一旦开始下线操作后,无法恢复原有状态。
本文操作为最佳实践操作演示,请结合集群实际情况进行评估后谨慎操作,避免集群任务调度失败以及数据安全的风险。
下线前准备
您可以根据集群服务负载情况,选择需要下线的节点。您需要计算待下线节点的规格,避免节点缩容后造成集群负载过高。
如果集群属于以下情况,需要特殊注意:
如果
Core节点的数量 = HDFS的副本数量
,请勿缩容Core节点。如果您的集群为非高可用集群,请勿缩容emr-worker-1和emr-worker-2 节点。
如果您的集群为高可用集群,但Master节点数为2,请勿缩容emr-worker-1节点。
服务组件Decommission
如果您的集群安装了以下服务,请在删除ECS前对已安装的这些服务组件先进行Decommission操作,否则可能会导致任务调度失败以及数据安全的问题。
YARN NodeManager Decommission
进入YARN服务的状态页面。
在顶部菜单栏处,根据实际情况选择地域和资源组。
在EMR on ECS页面,单击目标集群操作列的集群服务。
在集群服务页面,单击YARN服务区域的状态。
下线目标节点的NodeManager。
在组件列表中,单击NodeManager操作列中的下线。
在弹出的对话框中,选择执行范围、输入执行原因、单击确定。
在弹出的对话框中,单击确定。
单击右上角的操作历史,可以查看操作进度。
HDFS DataNode Decommission
通过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自动启动Decommission。
sudo su - hdfs hdfs dfsadmin -refreshNodes
确认下线结果。
输⼊以下命令,判断decommission过程是否已经完成。
hadoop dfsadmin -report
当指定节点的Decommission Status为Decommissioned,即表示该节点DataNode的数据已经迁移⾄其他节点,下线操作已经完成。
SmartData JindoStorageService Decommission(Hadoop集群)
进入SmartData服务的状态页面。
在顶部菜单栏处,根据实际情况选择地域和资源组。
在EMR on ECS页面,单击目标集群操作列的集群服务。
在集群服务页面,单击SmartData服务区域的状态。
下线目标节点的JindoStorageService。
在组件列表中,单击JindoStorageService操作列中的下线。
在弹出的对话框中,选择执行范围、输入执行原因、单击确定。
在弹出的对话框中,单击确定。
单击右上角的操作历史,可以查看操作进度。
HBase HRegionServer Decommission
进入HBase服务的状态页面。
在顶部菜单栏处,根据实际情况选择地域和资源组。
在EMR on ECS页面,单击目标集群操作列的集群服务。
在集群服务页面,单击HBase服务区域的状态。
下线目标节点的HRegionServer。
在组件列表中,单击HRegionServer操作列中的停止。
在弹出的对话框中,输入执行原因,单击确定。
单击右上角的操作历史,可以查看操作进度。
StarRocks Decommission
登录集群并使用客户端访问集群,详情请参见快速入门。
执行如下命令,通过
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-HDFS DataNode Decommission
通过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自动启动Decommission。
sudo su - hdfs export HADOOP_CONF_DIR=/etc/taihao-apps/hdfs-conf/namenode hdfs dfsadmin -refreshNodes
确认下线结果。
输⼊以下命令,判断decommission过程是否已经完成。
hadoop dfsadmin -report
当指定节点的Decommission Status为Decommissioned,即表示该节点DataNode的数据已经迁移⾄其他节点,下线操作已经完成。
释放节点
您需要登录ECS控制台对集群节点进行操作,如果您是RAM用户,则需要您具有ECS相关权限,建议授权AliyunECSFullAccess。
进入节点管理页面。
在顶部菜单栏处,根据实际情况选择地域和资源组。
在EMR on ECS页面,单击目标集群操作列的节点管理。
在节点管理页面,单击待释放节点的ECS ID。
即可进入ECS控制台。
在ECS控制台上对实例进行释放操作,详情请参见释放实例。
相关文档
对于按量付费和抢占式实例的Task节点组的缩容操作,详情请参见缩容集群。