增加或缩减服务器,注意不允许白名单和黑名单同时出现同一个主机。
1 服役新服务器
原有数据节点不能满足数据存储需求时,需要在原有集群的基础上动态增加节点,即动态增加服务器,增加服务器的同时不需要重启集群。
hadoop完全分布式集群设置了3个datanode节点,当白名单里只配置了2台主机时,在hdfs系统中显示datanode还是有3个节点的原因:
白名单只限制哪些机器可以作为DataNode加入到集群中,但是这只是一个限制条件,并不会阻止DataNode节点向NameNode注册。因为配置了3个DataNode节点,即使其中某些节点不在白名单中,它们仍然会向NameNode注册并成为集群的一部分。开发时注意如果某个DataNode节点不在白名单中,则在设置白名单时,需要在配置文件中将该节点的IP地址添加到白名单中,以确保它不会被误删或误配置。
根据上述原因需要一台新的主机hadoop105进行测试。
环境准备:
(1)在hadoop100主机上克隆一台hadoop105主机。
(2)修改ip地址和主机名,然后重启。
vim /etc/sysconfig/network-scripts/ifcfg-ens33
vim /etc/hostname
reboot
(3)在hadoop102拷贝/opt/module和/etc/profile.d/my_env.sh到hadoop105。
scp -r module/* liaoyanxia@hadoop105:/opt/module/
sudo scp /etc/profile.d/my_env.sh root@hadoop105:/etc/profile.d/my_env.sh
(4)在hadoop105让环境变量生效,并且删除Hadoop历史数据即data、logs文件。
source /etc/profile
rm -rf data/ logs/
(5)配置在hadoop102和hadoop103到hadoop105的ssh免密登录。
ssh-copy-id hadoop105
(6)在hadoop105直接启动DataNode,单点启动hdfs和yarn,可关联到集群。
hdfs --daemon start datanode
yarn --daemon start nodemanager
2 添加白名单
白名单:在白名单的主机IP可以访问集群,用于存储数据。
不在白名单上的主机可以访问集群,但是不能存储数据。配置白名单可以一定程度上防止黑客攻击。
配置白名单步骤:
(1)在NameNode节点的hadoop-3.3.1/etc/hadoop创建whitelist和blacklist文件,白名单whitelist中添加主机名称102、103、104,黑名单为空白。
touch blacklist
(2)在hdfs-site.xml配置文件中增加dfs.hosts配置参数。
<!-- 白名单 -->
<property>
<name>dfs.hosts</name>
<value>/opt/module/hadoop-3.3.1/etc/hadoop/whitelist</value>
</property>
<!-- 黑名单 -->
<property>
<name>dfs.hosts.exclude</name>
<value>/opt/module/hadoop-3.3.1/etc/hadoop/blacklist</value>
</property>
(3)分发whitelist,hdfs-site.xml,重启集群,如果不是第一次添加白名单只需要刷新NameNode节点就可以。
xsync hdfs-site.xml whitelist blacklist
(4)在web查看DataNode,http://hadoop102:9870/dfshealth.html#tab-datanode,只有在白名单的主机节点。
(5)在hadoop105上传数据失败(不在白名单的主机可以访问集群,但是不能存储数据)
hadoop fs -put test105.txt /
(6)把hadoop105加到白名单上,分发白名单,刷新NameNode(接1 服役新服务器)
vim whitelist 然后添加 hadoop105
xsync whitelist
hdfs dfsadmin -refreshNodes
(7)在hadoop105上传文件。
hadoop fs -put test105.txt /
在hadoop105提交任务,则必然显示105,因为就近原则选择节点距离最近的,先选择本地,也就是105的距离为0,别的节点距离为1。
当前存在一个情况:hadoop105数据少,别的节点数据多,即数据不均衡问题。
3 服务器间数据均衡
可能出现两种情况:经常在某些节点上提交任务,由于本地原则,导致这些节点的数据过多,别的节点存储数据量小;新服役的服务器数据量较少。这两种情况需要执行集群均衡命令。
PS:由于HDFS需要启动单独的Rebalance Server来执行Rebalance操作,所以尽量不要在NameNode上执行start-balancer.sh,而是找一台比较空闲的机器。
开启数据均衡命令,参数10,代表的是集群中各个节点的磁盘空间利用率相差不超过10%(也就是任何两个节点的数据都不超过10%),可根据实际情况进行调整:
sbin/start-balancer.sh -threshold 10
停止数据均衡命令:
sbin/stop-balancer.sh
4 黑名单退役服务器
黑名单:黑名单里的主机不能用来存储数据,企业设置黑名单用于退役服务器。
(1)在blacklist文件中添加要退役节点:hadoop105。且hdfs-site.xml中有黑名单的配置参数:
<!-- 黑名单 -->
<property>
<name>dfs.hosts.exclude</name>
<value>/opt/module/hadoop-3.3.1/etc/hadoop/blacklist</value>
</property>
(2)分发blacklist和hdfs-site.xml,第一次添加黑名单需要重启集群,否则只用刷新NameNode节点。
xsync blacklist hdfs-site.xml
hdfs dfsadmin -refreshNodes
(3)检查Web浏览器,退役节点的状态为decommission in progress(退役中),说明数据节点正在复制块(退役节点的副本)到其他节点。
(4)等待退役节点状态为decommissioned(所有块已经复制完成),停止该节点及节点资源管理器。
hdfs --daemon stop datanode
yarn --daemon stop nodemanager
(5)如果数据不均衡,可以用命令实现集群的再平衡。
sbin/start-balancer.sh -threshold 10