随着数据湖技术的普及,越来越多的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,无法进行释放节点和缩容操作。
操作步骤
通过SSH方式连接集群,请参见登录集群。
执行以下命令,切换到hdfs用户。
su hdfs
可选:执行以下命令,查看当前NameNode的个数。
说明该步骤只适用于HA集群,非HA集群无需查看NameNode的个数。
hdfs haadmin -getAllServiceState
编辑dfs.exclude文件。
重要HA集群:依次ssh到NameNode所在节点,编辑dfs.exclude文件。
非HA集群:在当前NameNode节点,编辑dfs.exclude文件。
数据湖
执行以下命令,编辑dfs.exclude文件。
touch /etc/emr/hdfs-conf/dfs.exclude vim /etc/emr/hdfs-conf/dfs.exclude
添加待下线DataNode的hostname至文件中。
core-1-3.c-7dfd6ac2b7c9**** core-1-4.c-7dfd6ac2b7c9****
说明如需再添加下线的DataNode节点,只需在文件末尾处添加待下线DataNode的hostname,无需删除已添加的内容。
旧版数据湖
执行以下命令,编辑dfs.exclude文件。
touch /etc/ecm/hadoop-conf/dfs.exclude vim /etc/ecm/hadoop-conf/dfs.exclude
添加待下线DataNode的hostname至文件中。
emr-worker-3.cluster-**** emr-worker-4.cluster-****
说明如需再添加下线的DataNode节点,只需在文件末尾处添加待下线DataNode的hostname,无需删除已添加的内容。
执行下线操作。
HA集群在任一NameNode所在节点,非HA集群在当前NameNode节点,通过hdfs用户执行以下刷新命令,HDFS会自动启动Decommission操作。
hdfs dfsadmin -refreshNodes
执行以下命令,判断Decommission过程是否已经完成。
hadoop dfsadmin -report
如果指定节点的Decommission Status为Decommission in progress,则表示正在下线中。当指定节点的Decommission Status为Decommissioned时,即表示该节点DataNode的数据已经迁移⾄其他节点,下线操作已经完成。