Hadoop集群经常需要添加节点或者从集群中移出故障节点。
委任新datanode
向集群添加datanode,需要通过hdfs的hdfs-site.xml的配置参数dfs.hosts来实现,然后启动datanode进程。
将源集群的配置文件拷贝至新节点待用。
在配置文件路径/opt/module/hadoop-2.6.0/etc/hadoop添加include.txt文件
# cat include.txt
node4
master
在hdfs-site.xml中添加配置
<property> <name>dfs.hosts</name> <value>/opt/module/hadoop-2.6.0/etc/hadoop/include.txt</value> </property>
在namenode上刷新节点信息
$ hdfs dfsadmin -refreshNodes
修改slaves文件,添加新节点主机名
$ cat slaves
node1
node2
node3
node4
master
启动新节点datanode
$ hadoop-daemon.sh start datanode
通过web查看
解除节点
解除节点是通过dfs的hdfs-site.xml的配置参数dfs.hosts.exclude来实现,然后删除slaves文件中对应节点。
添加待解除节点ip或主机名到exclude.txt文件中,不改include.txt文件
$ cat /opt/module/hadoop-2.6.0/etc/hadoop/exclude.txt
node4
在hdfs-site.xml中添加配置
<property> <name>dfs.hosts.exclude</name> <value>/opt/module/hadoop-2.6.0/etc/hadoop/exclude.txt</value> </property>
在namenode上刷新节点信息
$ hdfs dfsadmin -refreshNodes
在web中查看,此时待解除的datanode会把持有的块复制到其他datanode
删除include.txt中的解除节点
$ cat include.txt
master
刷新节点信息
$ hdfs dfsadmin -refreshNodes
在web中查看
删除slaves文件中的解除节点
$ cat slaves
node1
node2
node3
master
如果一个datanode节点同时出现在include和exclude文件中,那么会按照如下的规则决定是否可用:
是否出现在include文件 | 是否出现在exclude文件 | 解释 |
否 | 否 | 节点无法连接 |
否 | 是 | 节点无法连接 |
是 | 否 | 节点可连接 |
是 | 是 | 节点可连接,将被解除 |