首先我们要明白,HDFS支持热部署
如果我们在hadoop集群执行过程中,硬盘内存不足了,想新加一个新节点怎么办?
或者有些节点用不到,我们怎么将它退役掉?
在HDFS中存在两个配置项:(他们都需要指向一个文件)
dfs.hosts:白名单文件,白名单文件中存放的就是HDFS的datanode的地址,在白名单中的地址会和namenode通信,不在白名单中的地址无法与namenode通信。如果一个地址只在白名单中不在黑名单中,代表这个节点需要服役。(动态)
dfs.hosts.exclude:黑名单文件,在这个文件中地址不会与namenode通信,并且如果一个节点地址在白名单和黑名单中同时出现,你们代表这个节点需要退役。(动态)
服役新的数据节点的步骤:
1、准备一台新的机器---克隆
2、更改新机器的主机名 ip 同时需要和namenode所在的节点配置ssh免密登录
3、新克隆的虚拟机中的hdfs的数据全部删掉 rm -rf /opt/module/hadoop-2.8.5/metaData/*
4、再namenode所在节点的hadoop的etc/hadoop路径下创建一个dfs.hosts文件---里面需要配置数据节点的位置
5、再slaves文件中配置一下数据节点
6、再namenode的hdfs-site.xml文件中增加配置
<property>
<name>dfs.hosts</name>
<value>/opt/app/hadoop/etc/hadoop/dfs.hosts</value>
</property>
7、刷新一个namenode中监控的datanode的节点
hdfs dfsadmin -refreshNodes
8、再新的数据节点启动datanode即可
退役旧的数据节点:
1、namenode节点的etc/hadoop下创建一个文件dfs.hosts.exclude
定义退役哪个数据节点
2、再hdfs.site.xml中将dfs.hosts.exclude文件指定一下
<property>
<name>dfs.hosts.exclude</name>
<value>/opt/module/hadoop/etc/hadoop/dfs.hosts.exclude</value>
</property>
3、重新刷新一个datanode节点信息
hdfs dfsadmin -refreshNodes
4、退役完成之后,需要再slaves和dfs.hosts文件当中将退役的数据节点删除了
5、然后再重新刷新datanode节点信息
其中slaves文件既不属于白名单也不属于黑名单,他是指定我们再启动HDFS集群的时候默认启动哪些数据节点如果什么都没写的话那么不启动任何的数据节点
一般情况下在安装HDFS集群时,把这个配置项加上后,再去启动HDFS集群,这样的话后期服役和退役结点都不需要重启HDFS。