E-MapReduce(简称EMR)目前仅支持付费类型为按量付费的Task节点组进行缩容,当您集群的其余类型节点组需要缩容节点时,可以按照本文对集群节点进行下线处理。

注意事项

  • 本文操作均不可逆,一旦开始下线操作后,无法恢复原有状态。
  • 本文操作为最佳实践操作演示,请结合集群实际情况进行评估后谨慎操作,避免集群任务调度失败以及数据安全的风险。

下线前准备

您可以根据集群服务负载情况,选择需要下线的节点。您需要计算待下线节点的规格,避免节点缩容后造成集群负载过高。
重要 如果集群属于以下情况,需要特殊注意:
  • 如果Core节点的数量 = HDFS的副本数量,请勿缩容Core节点。
  • 如果您的集群为非高可用集群,请勿缩容emr-worker-1和emr-worker-2 节点。
  • 如果您的集群为高可用集群,但Master节点数为2,请勿缩容emr-worker-1节点。

服务组件Decommission

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

YARN NodeManager Decommission

  1. 进入YARN服务的状态页面。
    1. 登录EMR on ECS控制台
    2. 在顶部菜单栏处,根据实际情况选择地域和资源组
    3. 集群管理页面,单击目标集群操作列的集群服务
    4. 集群服务页面,单击YARN服务区域的状态
  2. 下线目标节点的NodeManager。
    1. 组件列表中,单击more展开NodeManager拓扑列表。
    2. 在NodeManager拓扑列表中,操作待下线的节点。
      • 如果您的集群为非Hadoop集群类型,请单击下线(decommission)。
      • 如果您的集群为Hadoop集群类型,请单击停止
  3. 在弹出的对话框中,输入执行原因,单击确定
  4. 单击右上角的操作历史,可以查看操作进度。

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 Jindo Storage Service Decommission(Hadoop集群)

  1. 进入SmartData服务的状态页面。
    1. 登录EMR on ECS控制台
    2. 在顶部菜单栏处,根据实际情况选择地域和资源组
    3. 集群管理页面,单击目标集群操作列的集群服务
    4. 集群服务页面,单击SmartData服务区域的状态
  2. 下线目标节点的Jindo Storage Service。
    1. 组件列表中,单击more展开Jindo Storage Service拓扑列表。
    2. 在Jindo Storage Service拓扑列表中,单击下线
  3. 在弹出的对话框中,输入执行原因,单击确定
  4. 单击右上角的操作历史,可以查看操作进度。

HBase HRegionServer Decommission

  1. 进入HBase服务的状态页面。
    1. 登录EMR on ECS控制台
    2. 在顶部菜单栏处,根据实际情况选择地域和资源组
    3. 集群管理页面,单击目标集群操作列的集群服务
    4. 集群服务页面,单击HBase服务区域的状态
  2. 下线目标节点的HRegionServer。
    1. 组件列表中,单击more展开HRegionServer拓扑列表。
    2. 在HRegionServer拓扑列表中,单击下线(decommission)。
  3. 在弹出的对话框中,输入执行原因,单击确定
  4. 单击右上角的操作历史,可以查看操作进度。

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节点,则说明下线成功。

释放节点

重要 您需要登录ECS控制台对集群节点进行操作,如果您是RAM用户,则需要您具有ECS相关权限,建议授权AliyunECSFullAccess。
  1. 进入节点管理页面。
    1. 登录EMR on ECS控制台
    2. 在顶部菜单栏处,根据实际情况选择地域和资源组
    3. 集群管理页面,单击目标集群操作列的节点管理
  2. 节点管理页面,单击待释放节点的ECS ID。
    即可进入ECS控制台。
  3. 在ECS控制台上对实例进行释放操作,详情请参见释放实例