手工缩容Core节点组

当您的集群负载长时间处于低水平且大量集群资源处于闲置状态时,您可以考虑对集群的Core节点组进行缩容,以避免资源的浪费。本文将为您介绍Core节点组的缩容方法。

使用限制

  • 如果您的集群付费类型是包年包月集群,则不支持缩容Core节点组。

  • 如果您使用的是旧版Hadoop集群且集群Core节点的数量和HDFS的副本数量相等,则不支持缩容Core节点组。

注意事项

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

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

步骤一:选择下线节点

您可以根据集群服务的负载情况,选择需要下线的节点。本文提供两种方法以供您查看集群资源的使用情况,从而判断需要下线的节点。

方法一:EMR控制台监控诊断

  1. 指标监控页面查看YARN-Queues仪表盘的AvailableVCores指标。如果AvailableVCores指标长时间保持较高水平,说明队列中存在较多可用核数,此时可考虑对集群的Core节点组进行缩容。

  2. 指标监控页面查看YARN-NodeManagers仪表盘中的AvailableGB指标。如果某个节点的AvailableGB指标长时间保持较高水平,则表明该节点拥有较多可用内存,此时可以考虑释放该节点。

说明

您可以根据您的业务需求结合其他指标作为判断依据。有关更多指标的信息,请参见集群指标

方法二:YARNWEB UI页面

  1. 查看集群队列资源使用情况,如果发现队列资源经常使用得很少,此时可考虑对集群的Core节点组进行缩容。

    Core_p1

  2. Nodes页面,按照Nodes Address进行排序,可以快速找出哪个节点可用内存较多,此时可以考虑释放该节点。

    core_p2

重要

如果您的集群是旧版Hadoop集群且有以下情况,需要特别注意:

  • 如果您的集群为非高可用集群,请不要下线emr-worker-1emr-worker-2 节点。

  • 如果您的集群为高可用集群,但Master节点数为2,请不要下线emr-worker-1节点。

步骤二:查看下线节点服务

Core节点组上的节点不仅部署计算服务以执行计算任务,还保存部分服务的数据。在对Core节点组进行缩容时,需要先将对应节点的相关组件服务下线,才能释放相应的节点资源。可以在控制台的节点管理页面查看节点部署组件情况。

core_p3

步骤三:节点组件服务下线

如果您选择的下线节点已安装以下组件服务,请在释放节点之前对已安装的这些服务组件先行进行下线操作,否则可能会导致任务调度失败及数据安全的问题。

YARN NodeManager下线

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

    1. 登录E-MapReduce控制台

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

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

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

  2. 下线目标节点的NodeManager。

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

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

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

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

HDFS DataNode下线

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

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

    sudo su - hdfs
    hdfs haadmin -getAllServiceState
  3. 依次sshNameNode所在节点,编辑dfs.exclude文件,加入需要下线的节点,每次建议只新增一台。

    • 旧版Hadoop集群

      touch /etc/ecm/hadoop-conf/dfs.exclude
      vim /etc/ecm/hadoop-conf/dfs.exclude

      vim下输入o,新开始一行,填写下线的DataNodehostname。

      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,新开始一行,填写下线的DataNodehostname。

      core-1-3.c-0894dxxxxxxxxx
      core-1-4.c-0894dxxxxxxxxx
  4. 在任一NameNode所在节点,切换到hdfs用户,执行刷新命令,HDFS自动启动下线。

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

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

    hadoop dfsadmin -report

    当指定节点的下线StatusDecommissioned,即表示该节点DataNode的数据已经迁移至其他节点,下线操作已经完成。

StarRocks下线

  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

    SystemDecommissionedtrue的节点,表示正在进行Decommission。当BE节点的TabletNum0时,系统会清理元数据。

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

HBase HRegionServer下线

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

    1. 登录E-MapReduce控制台

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

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

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

  2. 下线目标节点的HRegionServer。

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

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

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

HBASE-HDFS DataNode下线

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

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

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

    hdfs dfsadmin -report
  4. 依次sshNameNode所在节点,编辑dfs.exclude文件,加入需要下线的节点,每次建议只新增一台。

    touch /etc/taihao-apps/hdfs-conf/dfs.exclude
    vim /etc/taihao-apps/hdfs-conf/dfs.exclude

    vim下输入o,新开始一行,填写下线的DataNodehostname。

    core-1-3.c-0894dxxxxxxxxx
    core-1-4.c-0894dxxxxxxxxx
  5. 在任一NameNode所在节点,切换到hdfs用户,执行刷新命令,HDFS自动启动下线。

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

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

    hadoop dfsadmin -report

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

    SmartData JindoStorageService下线(旧版Hadoop集群)

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

      1. 登录E-MapReduce控制台

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

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

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

    2. 下线目标节点的JindoStorageService。

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

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

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

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

步骤四:释放下线节点

重要

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

  1. 进入节点管理页面。

    1. 登录E-MapReduce控制台

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

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

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

    即可进入ECS控制台。

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

相关文档

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

  • 如果您的集群计算资源不足,您可以对集群的Core节点组和Task节点组进行扩容,详情请参见扩容集群

  • 如果您想根据业务需求自动调整集群计算资源,您可以为节点组设置托管弹性伸缩或自定义弹性伸缩规则,详情请参见弹性伸缩