有时候根据需求需要为 HDFS 集群新增节点. 并且 HDFS 不停机, 这里记录一下新增节点的操作.
在新增的数据节点处安装和 master
同样的Hadoop配置
为新增的数据节点服务器和集群中的其他服务器配置 SSH免登录
修改 <hadoop_home>/etc/hadoop/slaves
添加新的数据节点
在新增的数据节点服务器处执行 hadoop-daemon.sh start datanode
启动 datanode 节点
在 master
节点执行 hdfs dfsadmin -report
查看新节点是否已经被添加
默认的 datanode 节点是没有数据的, 此时需要调整一下集群平衡, 使得集群每个节点占用空间一致 (访问均衡).
输入 start-balancer.sh -threshold 8
执行节点平衡命令
输入 stop-balancer.sh
停止节点平衡
如果不了解 hdfs 平衡, 请参考
修改 hdfs-site.xml
添加如下内容
<property>
<name>dfs.hosts.exclude</name>
<value>/home/hadoop/hadoop-2.6.0/etc/hadoop/excludes</value>
<description> Names a file that contains a list of hosts that are not permitted to connect to the namenode. The full pathnam
e of the file must be specified If the value is empty, no hosts are excluded. </description>
</property>
其中 /home/hadoop/hadoop-2.6.0/etc/hadoop/excludes
文件中为要删除的机器hostname,示例如下:
slave8.spark
slave9.spark
执行命令刷新 hdfs 节点 hdfs dfsadmin -refreshNodes
( 如果未生效,则需要手动停止 namenode 再启动之后 )
运行命令查看 hdfs 节点状态 hdfs dfsadmin -report
, 可以看到 datanode 处于 Decommission in progress 状态
从下图也能看出来
这里解释一下字段的含义
执行数据平衡命令
修改 slaves
文件