手工缩容节点组

当EMR集群资源过剩时,为了保障HDFS数据的稳定性,您需要对Core节点组进行手动缩容。此外,由于包年包月的Task节点组不支持自动缩容,您也需要进行手动退订。

注意事项

  • 本文操作均不可逆,一旦开始下线操作后,无法恢复原有状态。

  • 本文操作为最佳实践操作演示,请结合集群实际情况进行评估后谨慎操作,避免集群任务调度失败以及数据安全的风险。

下线前准备

您可以根据集群服务负载情况,选择需要下线的节点。您需要计算待下线节点的规格,避免节点缩容后造成集群负载过高。

重要

如果集群属于以下情况,需要特殊注意:

  • 如果Core节点的数量 = HDFS的副本数量,请勿缩容Core节点。

  • 如果您的集群为非高可用集群,请勿缩容emr-worker-1和emr-worker-2 节点。

  • 如果您的集群为高可用集群,但Master节点数为2,请勿缩容emr-worker-1节点。

服务组件Decommission

如果您的集群安装了以下服务,请在删除ECS前对已安装的这些服务组件先进行Decommission操作,否则可能会导致任务调度失败以及数据安全的问题。

YARN NodeManager Decommission

  1. 进入YARN服务的状态页面。

    1. 登录E-MapReduce控制台

    2. 在顶部菜单栏处,根据实际情况选择地域和资源组

    3. EMR on ECS页面,单击目标集群操作列的集群服务

    4. 集群服务页面,单击YARN服务区域的状态

  2. 下线目标节点的NodeManager。

    1. 组件列表中,单击NodeManager操作列中的下线

    2. 在弹出的对话框中,选择执行范围、输入执行原因、单击确定

    3. 在弹出的对话框中,单击确定

  3. 单击右上角的操作历史,可以查看操作进度。

HDFS DataNode Decommission

  1. 通过SSH方式登录集群Master节点,详见请参见登录集群

  2. 切换到hdfs用户,并查看当前NameNode的个数。

    sudo su - hdfs
    hdfs haadmin -getAllServiceState
  3. 依次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
  4. 在任一NameNode所在节点,切换到hdfs用户,执行刷新命令,HDFS自动启动Decommission。

    sudo su - hdfs
    hdfs dfsadmin -refreshNodes
  5. 确认下线结果。

    输⼊以下命令,判断decommission过程是否已经完成。

    hadoop dfsadmin -report

    当指定节点的Decommission Status为Decommissioned,即表示该节点DataNode的数据已经迁移⾄其他节点,下线操作已经完成。

SmartData JindoStorageService Decommission(Hadoop集群)

  1. 进入SmartData服务的状态页面。

    1. 登录E-MapReduce控制台

    2. 在顶部菜单栏处,根据实际情况选择地域和资源组

    3. EMR on ECS页面,单击目标集群操作列的集群服务

    4. 集群服务页面,单击SmartData服务区域的状态

  2. 下线目标节点的JindoStorageService。

    1. 组件列表中,单击JindoStorageService操作列中的下线

    2. 在弹出的对话框中,选择执行范围、输入执行原因、单击确定

    3. 在弹出的对话框中,单击确定

  3. 单击右上角的操作历史,可以查看操作进度。

HBase HRegionServer Decommission

  1. 进入HBase服务的状态页面。

    1. 登录E-MapReduce控制台

    2. 在顶部菜单栏处,根据实际情况选择地域和资源组

    3. EMR on ECS页面,单击目标集群操作列的集群服务

    4. 集群服务页面,单击HBase服务区域的状态

  2. 下线目标节点的HRegionServer。

    1. 组件列表中,单击HRegionServer操作列中的停止

    2. 在弹出的对话框中,输入执行原因,单击确定

  3. 单击右上角的操作历史,可以查看操作进度。

StarRocks Decommission

  1. 登录集群并使用客户端访问集群,详情请参见快速入门

  2. 执行如下命令,通过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";
  3. 执行以下命令,观察BE状态。

    show backends;

    Starrocks1

    SystemDecommissioned为true的节点,表示正在进行Decommission。当BE节点的TabletNum为0时,系统会清理元数据。

    如果图中查看不到BE节点,则说明下线成功。

HBASE-HDFS DataNode Decommission

  1. 通过SSH方式登录集群Master节点,详见请参见登录集群

  2. 执行以下命令,切换到hdfs用户并设置环境变量。

    sudo su - hdfs
    export HADOOP_CONF_DIR=/etc/taihao-apps/hdfs-conf/namenode
  3. 执行以下命令,查看当前NameNode的信息。

    hdfs dfsadmin -report
  4. 依次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
  5. 在任一NameNode所在节点,切换到hdfs用户,执行刷新命令,HDFS自动启动Decommission。

    sudo su - hdfs
    export HADOOP_CONF_DIR=/etc/taihao-apps/hdfs-conf/namenode
    hdfs dfsadmin -refreshNodes
  6. 确认下线结果。

    输⼊以下命令,判断decommission过程是否已经完成。

    hadoop dfsadmin -report

    当指定节点的Decommission Status为Decommissioned,即表示该节点DataNode的数据已经迁移⾄其他节点,下线操作已经完成。

释放节点

重要

您需要登录ECS控制台对集群节点进行操作,如果您是RAM用户,则需要您具有ECS相关权限,建议授权AliyunECSFullAccess。

  1. 进入节点管理页面。

    1. 登录E-MapReduce控制台

    2. 在顶部菜单栏处,根据实际情况选择地域和资源组

    3. EMR on ECS页面,单击目标集群操作列的节点管理

  2. 节点管理页面,单击待释放节点的ECS ID。

    即可进入ECS控制台。

  3. 在ECS控制台上对实例进行释放操作,详情请参见释放实例

相关文档

对于按量付费和抢占式实例的Task节点组的缩容操作,详情请参见缩容集群