本篇博客主要是对hadoop hdfs的扩容和缩容进行配置。主要包括:如何添加hdfs集群的白名单、添加服役服务器、集群服务器之间的数据均衡和黑名单退役不需要的服务器的方法和命令。有不足的地方欢迎各位大佬斧正!感谢!
将bdc112、bdc113加入白名单,而bdc114不加入白名单
配置步骤如下:
setup1:在NameNode节点的/home/lqs/module/hadoop-3.1.3/etc/hadoop目录下分别创建whitelist 和blacklist文件
setup6:当我们想要加入新的节点时,只需要在白名单里增加对应的ip地址即可,这里以bdc114为例
1、克隆一台主机取名为bdc115
2、修改其ip地址和主机名(bdc115)
在平时的开发中,如果经常在bdc112和bdc114上提交任务,且副本数为2,由于数据本地性原则,就会导致bdc112和bdc114数据过多,bdc113存储的数据量小
第二种情况:
情况,就是新服役的服务器数据量比较少,需要执行集群均衡命令。
5、等待退役节点状态为decommissioned(所有块已经复制完成),停止该节点及节点资源管理器。
注意:如果副本数是3,服役的节点小于等于3,是不能退役成功的,需要修改副本数后才能退役
目录
添加白名单
白名单:
一般情况:
白名单表示在白名单里的主机ip地址可用,即可以用来存储数据
企业中:
配置白名单,可以尽量防止黑客的恶意访问攻击
需求(bdc112、bdc113、bdc114):将bdc112、bdc113加入白名单,而bdc114不加入白名单
配置步骤如下:
setup1:在NameNode节点的/home/lqs/module/hadoop-3.1.3/etc/hadoop目录下分别创建whitelist 和blacklist文件
#1、创建白名单
[lqs@bdc112 hadoop]$ vim whitelist
#添加以下主机名称
bdc112
bdc113
#2、创建黑名单
[lqs@bdc112 hadoop]$ touch blacklist #这里创建是后面要用的,这里暂时不用添加东西
setup2:在hdfs-site.xml配置文件中添加如下内容
<!-- 白名单 -->
<property>
<name>dfs.hosts</name>
<value>/home/lqs/module/hadoop-3.1.3/etc/hadoop/whitelist</value>
</property>
<!-- 黑名单 -->
<property>
<name>dfs.hosts.exclude</name>
<value>/home/lqs/module/hadoop-3.1.3/etc/hadoop/blacklist</value>
</property>
setup3:分发配置文件 white,hdfs-site.xml
[lqs@bdc112 hadoop]$ xsync hdfs-site.xml whitelist
setup4:这里要注意,如果是第一次添加白名单必须要重启集群。如果不是,只需要刷新NameNode节点即可
[lqs@bdc112 hadoop-3.1.3]$ myhadoop.sh stop
[lqs@bdc112 hadoop-3.1.3]$ myhadoop.sh start
setup5:在web浏览器上查看DN,http://bdc112:9870/dfshealth.html#tab-datanodesetup6:当我们想要加入新的节点时,只需要在白名单里增加对应的ip地址即可,这里以bdc114为例
[lqs@bdc112 hadoop]$ vim whitelist
#修改成如下的样子即可
bdc112
bdc113
bdc114
setup7:刷新NameNode
[lqs@bdc112 hadoop-3.1.3]$ hdfs dfsadmin -refreshNodes
Refresh nodes successful
setup8:在浏览器上查看DN,http://bdc112:9870/dfshealth.html#tab-datanode
添加新的服务器进行服役
需求
随着开发业务的增长需求,数据量越来越大,原有的数据服务器的容量已经不能满足存储数据的需求,需要在原有集群基础上动态添加新的数据节点。
环境准备
这里是以虚拟机为例,实际和这里可能存在一定的差别1、克隆一台主机取名为bdc115
2、修改其ip地址和主机名(bdc115)
[root@bdc115 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@bdc115 ~]# vim /etc/hostname
3、拷贝bdc112的/home/lqs/module目录和/etc/profile.d/my_env.sh到bdc115
[lqs@bdc112 ~]$ scp -r module/* lqs@bdc115:/home/lqs/module/
[lqs@bdc112 ~]$ sudo scp /etc/profile.d/my_env.sh root@bdc115:/etc/profile.d/my_env.sh
[lqs@bdc115 hadoop-3.1.3]$ source /etc/profile
4、删除bdc115上Hadoop的历史数据,data和log数据
[lqs@bdc115 hadoop-3.1.3]$ rm -rf data/ logs/
5、配置bdc112和bdc113到bdc115的ssh无密登录
[lqs@bdc112 .ssh]$ ssh-copy-id bdc115
[lqs@bdc113 .ssh]$ ssh-copy-id bdc115
配置服役新节点的具体操作步骤
直接启动DataNode,即可关联到集群[lqs@bdc115 hadoop-3.1.3]$ hdfs --daemon start datanode
[lqs@bdc115 hadoop-3.1.3]$ yarn --daemon start nodemanager
在白名单中增加新服务器来服役
1、在白名单whitelist中增加bdc114、bdc115,并重启集群[lqs@bdc112 hadoop]$ vim whitelist
修改为如下内容
bdc112
bdc113
bdc114
bdc115
2、分发
[lqs@bdc112 hadoop]$ xsync whitelist
3、刷新NameNode
[lqs@bdc112 hadoop-3.1.3]$ hdfs dfsadmin -refreshNodes
Refresh nodes successful
在bdc115上上传文件
[lqs@bdc115 hadoop-3.1.3]$ hadoop fs -put /home/lqs/module/hadoop-3.1.3/LICENSE.txt /
服务器间的数据均衡
需要开启的原因
第一种情况:在平时的开发中,如果经常在bdc112和bdc114上提交任务,且副本数为2,由于数据本地性原则,就会导致bdc112和bdc114数据过多,bdc113存储的数据量小
第二种情况:
情况,就是新服役的服务器数据量比较少,需要执行集群均衡命令。
开启数据均衡的命令
[lqs@bdc115 hadoop-3.1.3]$ sbin/start-balancer.sh -threshold 10
#对于参数10,代表的是集群中各个节点的磁盘空间利用率相差不超过10%,可根据实际情况进行调整。
#注意,这里的参数最低也最好设置在10往上,因为太低了就没有意义了(这里和块大小有关系),但也不要太高了,太高了就失去了均衡的意义了
停止数据均衡命令:
[lqs@bdc115 hadoop-3.1.3]$ sbin/stop-balancer.sh
#注意:由于HDFS需要启动单独的Rebalance Server来执行Rebalance操作,所以尽量不要在NameNode上执行start-balancer.sh,而是找一台比较空闲的机器。
用黑名单的方法退役服务器
说明:
黑名单:
在黑名单中的主机ip地址不可以用来存储数据
企业中:
通常是配置黑名单来退役服务器
## 黑名单配置步骤如下:
1、编辑/home/lqs/module/hadoop-3.1.3/etc/hadoop目录下的blacklist文件
#注意,这里在前面创建白名单时就已经创建黑名单了
[lqs@bdc112 hadoop]$ vim blacklist
#添加如下主机名称(要退役的节点)
#bdc112
注意:如果白名单中没有配置,需要在hdfs-site.xml配置文件中增加dfs.hosts配置参数,如果配置了,这里可以忽略此步骤
<property>
<name>dfs.hosts.exclude</name>
<value>/home/lqs/module/hadoop-3.1.3/etc/hadoop/blacklist</value>
</property>
2、分发配置文件blacklist,hdfs-site.xml
[lqs@bdc114 hadoop]$ xsync hdfs-site.xml blacklist
3、第一次添加黑名单必须重启集群,不是第一次,只需要刷新NameNode节点即可
[lqs@bdc112 hadoop]$ hdfs dfsadmin -refreshNodes
Refresh nodes successful
4、检查Web浏览器,退役节点的状态为decommission in progress(退役中),说明数据节点正在复制块到其他节点5、等待退役节点状态为decommissioned(所有块已经复制完成),停止该节点及节点资源管理器。
注意:如果副本数是3,服役的节点小于等于3,是不能退役成功的,需要修改副本数后才能退役
[lqs@bdc115 hadoop]$ hdfs --daemon stop datanode
stopping datanode
[lqs@bdc115 hadoop]$ yarn --daemon stop nodemanager
stopping nodemanager
6、如果数据不均衡,可以用命令实现集群的再平衡
[lqs@bdc112 hadoop]$ sbin/start-balancer.sh -threshold 10