HDFS的文件拷贝
1、将本地的文件远程拷贝对对方主机
scp  -r  /root/test/       root@192.168.88.161:/root/       #拷贝目录
scp      /root/test/a.txt  root@192.168.88.161:/root/       #拷贝文件

scp      /root/test/a.txt   192.168.88.161:/root/           #简化写法

2、将远程主机的文件拉取到本主机
scp   -r  root@192.168.88.161:/root/       /root/test/            #拉取目录
scp       root@192.168.88.161:/root/       /root/test/a.txt       #拉取文件

scp       192.168.88.161:/root/       /root/test/a.txt            #简化写法

3、集群的hdfs之间进行文件拷贝
hadoop distcp hdfs://node1:8020/a.txt      hdfs://node8:8020/dir
(重点)Arichive机制
  • 概念
1、Arichive文件是一个打包文件,但是不会对文件进行压缩
2、Arichive文件归档之后,我们还可以透明的访问其中的每一个小文件
3、Archive主要解决HDFS不擅长存储小文件问题
4、Archive过程是一个MapReduce任务
5、Archive之后,原来的文件依然保留
  • 操作
0、数据准备 
hadoop fs -mkdir /config
cd /export/server/hadoop-3.3.0/etc/hadoop
hadoop fs -put *.xml /config

1、创建一个归档文件
#将/config目录的所有文件进行归档(打包),打包后的文件命名为test.har,并且把打包后的test.har存放在/outputdir目录
hadoop archive -archiveName test.har -p /config  /outputdir

2、查看打包后的归档文件
hadoop fs -cat /outputdir/test.har/part-0

3、查看规定文件中所有小文件的名字
hadoop fs -ls har://hdfs-node1:8020/outputdir/test.har
hadoop fs -ls har:///outputdir/test.har     #如果客户端也是集群的某台主机,可以使用该简写方案

4、查看归档文件中某个小文件的内容
hadoop fs -cat har:///outputdir/test.har/core-site.xml
HDFS的权限
1、HDFS的权限有一个总开关,在hdfs-site.xml中,该开关开启,权限就会起作用
  <property>
         <name>dfs.permissions.enabled</name>
         <value>true</value>
  </property>
2、修改HDFS的权限
hadoop  fs -chmod 777 /a.txt

(重点)HDFS的动态扩容和缩容
  • 概念
1、在不影响当前集群正常运行的情况下,对集群的主机的数量进行增加或者减少
  • 操作步骤1-动态上线
1、准备一台机器:node4,该机器要满足以下条件:
  1)设置ip: 192.168.88.164
  2)设置主机名: node4
  3)安装已经安装JDK
  4)设置时钟同步
  5)关闭防火墙
2、在三台机器上设置域名映射
  192.168.88.161 node1 node1.itcast.cn
  192.168.88.162 node2 node2.itcast.cn
  192.168.88.163 node3 node3.itcast.cn
  192.168.88.164 node4 node4.itcast.cn
  
3、构建node4和其他主机的免密登录
  3.1 在node4上生成公钥和私钥:ssh-keygen -t rsa
  3.2 在node4上将公钥发送给node1:ssh-copy-id node1
  3.3 在node1上将新的公钥发送给所有主机
     scp /root/.ssh/authorized_keys node2:/root/.ssh
     scp /root/.ssh/authorized_keys node3:/root/.ssh
     scp /root/.ssh/authorized_keys node4:/root/.ssh
     
4、在node1中,编辑文件/export/server/hadoop-3.3.0/etc/hadoop/workers 
    node1
	node2
	node3
	node4
	
5、在node1上,将配置好的hadoop分发给node4
  scp -r /export/server/hadoop-3.3.0/ node4:/export/server/
  
6、在node4上配置/etc/profile环境变量,然后记着source
	export HADOOP_HOME=/export/server/hadoop-3.3.0
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    
7、在node4,启动datanode
 hdfs --daemon start datanode
 
8、访问http://node1:9870页面的Datanodes菜单查看

9、在node1上设置DataNode负载均衡服务
  hdfs dfsadmin -setBalancerBandwidth 104857600  #设置带宽
  #设置负载均衡的意义:如果不同主机之间的存储比率超过%5,HDFS会自动的进行BLock块的再平衡
  hdfs balancer -threshold 5  #设置负载均衡
  • 操作步骤2-动态下线
1、编辑node1上配置文件,将node4添加到该文件,从此node4就上了集群的黑名单
vim /export/server/hadoop-3.3.0/etc/hadoop/excludes

2、在node1上,执行刷新命DataNode命令
hdfs dfsadmin -refreshNodes

3、访问http://node1:9870页面的Datanodes菜单查看状态
#在此刻如果你还想让node4上线,则需要去/export/server/hadoop-3.3.0/etc/hadoop/excludes文件删除node4,让它离开黑名单,然后刷新HDFS:hdfs dfsadmin -refreshNodes 即可

4、在node4上,关闭datanode
hdfs --daemon stop datanode

5、在node1上,实现负载均衡
hdfs balancer -threshold 5
(重点)HDFS的高可用
HDFS3.0的纠删码机制
  • 概述
1、传统的HDFS需要使用文件本身3倍的空间来存储数据,保证数据的可靠性
2、能不能有一种方法,既能不占用太多的冗余空间,又能保证可靠性,该方法就是纠删码机制
3、纠删码机制是Hadoop3.0以后加入的
  • 纠删码操作
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JXSn0xeX-1663574182206)(HDFS框架.assets/image-20220917163637510.png)]
1、策略解释
RS-10-4-1024k:使用RS编码,每10个数据单元(cell),生成4个校验单元,共14个单元,也就是说:这14个单元中,只要有任意的10个单元存在(不管是数据单元还是校验单元,只要总数=10),就可以得到原始数据。每个单元的大小是1M。

2、操作
2.1 查看当前系统支持的纠删码策略
hdfs ec -listPolicies   #默认所有的纠删码策略都是关闭的

2.2 设置纠删码
#HDFS的纠删码是对目录进行设置的,通俗的讲,你需要对某一个目录设置纠删码
 hdfs dfs -mkdir /rs-6-3              #在HDFS上创建测试目录
 hdfs ec -getPolicy -path /rs-6-3    #查看该目录是否设置了纠删码
 
 hdfs ec -enablePolicy  -policy  RS-6-3-1024k #启用纠删码
 
 hdfs ec -setPolicy -path /rs-6-3 -policy RS-6-3-1024k   #设置纠删码策略 9丢3
 
 hdfs ec -getPolicy -path /rs-6-3    #查看是否设置成功
 

 #执行该命令之后,发现不能成功,是因为当前的系统和Hadoop不支持ISA-L加速器
 #需要做两件事:1、给三台虚拟机安装ISA-L加锁器 2、对Hadoop
 #源码重新编译,让其支持ISA-L加速器
 #可以参考安装和编译文档
 hadoop fs -put 1.txt /rs-6-3  




解释:
[root@node1 ~]# hdfs ec -listPolicies                        
RS-10-4-1024k:必须保证有14台主机
RS-3-2-1024k: 必须保证有5台主机
RS-6-3-1024k: 必须保证有9台机器
XOR-2-1-1024k:必须保证有3个机架