1 服役新节点
随着公司业务的增长,数据量越来越大,原有的数据节点的容量已经不能满足存储数据的需求,需要在原有集群基础上动态添加新的数据节点
场景准备
- 在
hadoop104
主机上再克隆一台hadoop105
主机(这里自行选主机即可),使用VM
的话:右键虚拟机>管理>克隆>创建完整克隆
- 修改
IP地址
(/etc/sysconfig/network-scripts/ifcfg-ens33
(网卡标号可以通过ifconfig查看))和主机名称(/etc/hostname
):Hadoop学习1:hadoop模板机准备:非桌面版Centos7下载安装配置以及问题总结 - 删除原来
HDFS
文件系统留存的文件(/opt/module/hadoop-3.1.3/data和 log
)
如果不删除这些目录,可能
NameNode
会认为你跟原来的机器是同一个
机器,在NameNode中不会单独管理该克隆节点
source
一下配置文件使文件生效或者重启source /etc/profile
2 退役旧节点
2.1 黑名单和白名单
- 添加到白名单的主机节点,都
允许
访问NameNode
,不在白名单的主机节点,都会被直接退出 - 添加到黑名单的主机节点,
不允许
访问NameNode
,会在数据迁移后退出
实际情况下,白名单用于确定
允许
访问NameNode
的DataNode
节点,内容配置一般与workers
文件(hadoop2.x中为slaves
文件)内容一致。黑名单用于在集群运行过程中退役DataNode
节点
2.2 配置白名单和黑名单
- 在
NameNode
的/opt/module/hadoop-3.1.3/etc/hadoop
目录下分别创建whitelist
和blacklist
文件(具体的根据安装的目录路径,找到该安装目录下的etc/hadoop
)
touch blacklist
touch whitelist
- 在
NameNode
的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>
- 配置好后进行文件分发
#同步hadoop文件夹即可
xsync hadoop
- 重启集群
2.3 黑名单退役
- 这里直接添加主机名或者
ip
- 刷新
NameNode
:hdfs dfsadmin -refreshNodes
黑名单退役服务器并刷新后,通过管理页面可以看到是如下的状态表示
退役中
。有这个状态是因为,一个DataNode
在集群中存在过,那么说明有可能存在一些有用的数据,这个状态就是用来交接这些数据的,将他的一些数据转移到其他可用的DataNode
上
当状态变为退役完成后,就会变成橙色
2.4 白名单退役
过程同黑名单退役,这里不再赘述,不同的是不允许访问的不写在whitelist
文件即可
白名单退役方式是
直接抛弃节点
,没有数据的交接过程,可能造成数据的丢失通过管理页面,并没有上述的一个禁止的状态,而是在管理页面上是不显示对应的节点,也就是直接抛弃了,所以该方式不推荐
黑名单和白名单同时设置同一个主机,黑名单优先级更高
3 DataNode多目录存储
- 在
hdfs-site.xml
文件中在原本的存储目录配置中添加多个目录,并以,
分割
- 上述配置好后需要进行分发配置文件以及格式化集群,所以这个操作最好是在一开始就应该规划好,相关配置分发和格式化可参考这里Hadoop学习4:集群配置与测试下的集群单点启动
- 上传数据到
DataNode
的时候,即使创建了多个数据的存储目录,但是上传的信息是并不会在每一个存储的目录出现的,而是随机选择一个
多目录的一个意义是可以挂载不同的磁盘上进行扩展