下线DataNode

随着数据湖技术的普及,越来越多的E-MapReduce(简称EMR)用户选择把数据存放在全托管的数据存储服务中(例如,OSS-HDFS和OSS对象存储等),这样原有的Hadoop集群就不需要很多的DataNode。下线(Decommission)EMR集群的DataNode(Core节点),更多地使用Task节点可以更好地做到计算存储分离、成本优化和减轻运维负担等。本文为您介绍如何下线DataNode。

注意事项

  • 如果Core节点的数量等于HDFS的副本数量,则⽆法下线Core节点。

  • 对于EMR早期版本,HA集群的emr-worker-1,以及⾮HA集群的emr-worker-1和emr-worker-2节点,如果部署了Zookeeper和HDFS JournalNode等服务,则针对上述节点只能下线DataNode,无法进行释放节点和缩容操作。

操作步骤

  1. 通过SSH方式连接集群,请参见登录集群

  2. 执行以下命令,切换到hdfs用户。

    su hdfs
  3. 可选:执行以下命令,查看当前NameNode的个数。

    说明

    该步骤只适用于HA集群,非HA集群无需查看NameNode的个数。

    hdfs haadmin -getAllServiceState
  4. 编辑dfs.exclude文件。

    重要
    • HA集群:依次ssh到NameNode所在节点,编辑dfs.exclude文件。

    • 非HA集群:在当前NameNode节点,编辑dfs.exclude文件。

    • 数据湖

      1. 执行以下命令,编辑dfs.exclude文件。

        touch /etc/emr/hdfs-conf/dfs.exclude
        vim /etc/emr/hdfs-conf/dfs.exclude
      2. 添加待下线DataNode的hostname至文件中。

        core-1-3.c-7dfd6ac2b7c9****
        core-1-4.c-7dfd6ac2b7c9****
        说明

        如需再添加下线的DataNode节点,只需在文件末尾处添加待下线DataNode的hostname,无需删除已添加的内容。

    • 旧版数据湖

      1. 执行以下命令,编辑dfs.exclude文件。

        touch /etc/ecm/hadoop-conf/dfs.exclude
        vim /etc/ecm/hadoop-conf/dfs.exclude
      2. 添加待下线DataNode的hostname至文件中。

        emr-worker-3.cluster-****
        emr-worker-4.cluster-****
        说明

        如需再添加下线的DataNode节点,只需在文件末尾处添加待下线DataNode的hostname,无需删除已添加的内容。

  5. 执行下线操作。

    HA集群在任一NameNode所在节点,非HA集群在当前NameNode节点,通过hdfs用户执行以下刷新命令,HDFS会自动启动Decommission操作。

    hdfs dfsadmin -refreshNodes
  6. 执行以下命令,判断Decommission过程是否已经完成。

    hadoop dfsadmin -report

    如果指定节点的Decommission StatusDecommission in progress,则表示正在下线中。当指定节点的Decommission StatusDecommissioned时,即表示该节点DataNode的数据已经迁移⾄其他节点,下线操作已经完成。