Hadoop新老节点的添加与数据在平衡
1)新节点的添加,在添加新节点后需要安装相关软件并同步相关配置在白名单中添加新节点,然后重启集群
2)在遇到服务器数据量不均衡的情况下可开启数据平衡
sbin/start-balancer.sh -threshold 10 10这个参数代表集群中各节点的磁盘空间利用率不超过10%,可根据实际情况调整
3)关于老节点的退役,首先需要自行创建一个黑名单文件比如
vim /opt/module/hadoop-3.1.3/etc/hadoop/blacklist
在更改hdfs-site.xml文件增加参数
<!-- 黑名单 -->
<property>
<name>dfs.hosts.exclude</name>
<value>/opt/module/hadoop-3.1.3/etc/hadoop/blacklist</value>
</property>
在分发到各个服务器,如果是第一次使用黑名单则需要重启集群,否则只需要刷新NameNode节点即可
hdfs dfsadmin -refreshNodes
可在web端查看节点状态,decommission in progress,说明数据节点正在复制块到其他节点
Hadoop集群间的数据迁移
1)scp实现两个远程主机之间的文件复制
scp -r hello.txt root@hadoop103:/user/root/hello.txt // 推 push
scp -r root@hadoop103:/user/root/hello.txt hello.txt // 拉 pull
scp -r root@hadoop103:/user/root/hello.txt root@hadoop104:/user/root //是通过本地主机中转实现两个远程主机的文件复制;如果在两个远程主机之间ssh没有配置的情况下可以使用该方式。
2)采用distcp命令实现两个Hadoop集群之间的递归数据复制
bin/hadoop distcp hdfs://hadoop102:8020/user/root/hello.txt hdfs://hadoop105:8020/user/root/hello.txt
Hadoop的小文件归档(不改变小文件文件,只是让NameNode把一堆小文件看成一个文件)
1)需要启动YARN进程
start-yarn.sh
2)归档文件
把/user/root/input目录里面的所有文件归档成一个叫input.har的归档文件,并把归档后文件存到/user/root/output路径下。
hadoop archive -archiveName input.har -p /user/root/input /user/root/output
3)查看归档
hadoop fs -ls har:///user/root/output/input.har
4)解归档文件
hadoop fs -cp har:/// user/root/output/input.har/* /user/root
Hadoop的备份机制
1)Hadoop在设置副本数后在传入数据时会在接受到请求后通过NameNode检查目标文件是否存在,然后NameNode反馈是否可以上传,然后客户端请求发送第一个文件块上传到那几个DataNode服务器,NameNode会返回给它要上传的节点,在然后会挑选一个服务器上传数据,备份依靠链式传输,并逐级反馈接收情况。
2)在挑选备份数据的节点时,Hadoop会根据网络拓扑图来选择,它会尽量挑选不同节点的服务器来做备份提高容灾能力。对于节点感知有官方说明:http://hadoop.apache.org/docs/r3.1.3/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html#Data_Replication
3)源码查询:Crtl+n 查找BlockPlacementPolicyDefault,在该类中查找chooseTargetInOrder方法。