白名单和黑名单是hadoop管理集群机器的一种机制。
添加到白名单的主机节点,都允许访问NameNode,不在白名单的主机节点,都会被退出。
添加到黑名单的主机节点,不允许访问NameNode,会将黑名单的主机节点上的数据迁移到白名单主机节点上,然后退出该黑名单节点。
实际情况下,白名单用于确定允许访问NameNode的DataNode节点。黑名单用于在集群运行过程中退役DataNode节点。
一、配置白名单和黑名单的具体步骤如下:
1、在NameNode节点的/opt/module/hadoop-3.1.3/etc/hadoop目录下分别创建whitelist和blacklist文件。
//创建whitelist文件:
touch whitelist
//创建blacklist文件:
touch blacklist
2、在 hdfs-site.xml配置文件中添加dfs.hosts和dfs.hosts.exclude参数配置。
<!-- 白名单 -->
<property>
<name>dfs.hosts</name>
<value>/opt/module/hadoop-3.1.3/etc/hadoop/whitelist</value>
</property>
<!-- 黑名单 -->
<property>
<name>dfs.hosts.exclude</name>
<value>/opt/module/hadoop-3.1.3/etc/hadoop/blacklist</value>
</property>
3、分发配置文件whitelist、blacklist、hdfs-site.xml。(将这三个配置文件发送到集群中的所有机器中) 。rsync为分发命令,-av为归档拷贝并显示复制过程。
rsync -av $pdir/$fname $user@hadoop$host:$pdir/$fname
命令 选项参数 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称
4、分发脚本后,重启集群。
//关闭HDFS集群
stop-dfs.sh
//打开HDFS集群
start-dfs.sh
5、可在web浏览器上查看目前正常工作的DataNode节点。
二、黑名单退役步骤如下:
1、编辑/opt/module/hadoop-3.1.3/etc/hadoop目录下的blacklist文件。
vim blacklist
在文件内添加如下的主机名称(要退役的节点)。如下是对所有机器进行过host文件配置的。如果这样设置不起作用,可尝试此次填写具体ip地址。
hadoop101
2、分发blacklist到集群内所有节点上。rsync为分发命令,-av为归档拷贝并显示复制过程。
rsync -av $pdir/$fname $user@hadoop$host:$pdir/$fname
命令 选项参数 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称
3、刷新NameNode、刷新ResourceManager。
hdfs dfsadmin -refreshNodes
yarn rmadmin -refreshNodes
4、进入web浏览器,检查退役节点的状态为decommission in progress(退役中),说明数据节点正在复制块到其他白名单节点上。
5、等待退役节点状态为decommissioned(所有块已经复制完成),停止该节点及节点资源管理器。注意:如果副本数是3,服役的节点小于等于3,是不能退役成功的,需要修改副本数后才能退役。
hdfs --daemon stop datanode
yarn --daemon stop nodemanager
6、如果数据不均衡,可以用命令实现集群的再平衡。
sbin/start-balancer.sh
注意:不允许白名单和黑名单同时出现同一个主机名称,既然使用了黑名单blacklist成功退役了某个节点,因此要将白名单whitelist里面的该节点也去掉。