HDFS2.X新特性
集群间的数据拷贝
1、scp 实现两个远程主机之间的文件复制;
2、采用 distcp 命令实现两个 Hadoop 集群之间的递归数据复制
bin/hadoop distcp hdfs://haoop113:9000/sanguo hdfs://haoop113:9000/
小文件存档
每个块占元数据150byte,而元数据也会保存到内存中,因此大量的小文件会消耗大量的内存。
案例实操
1、需要启动 YARN 进程
start-yarn.sh
2、归档文件
把/sanguo/wei 目录(提前创建好该目录,并上传几个文件上去)里面的所有文件归档成一个叫 wei.har 的归档文件,并把归档后文件存储到/output(注意这个目录不能提前创建好) 路径下。
hadoop archive -archiveName wei.har -p /sanguo/wei /output
命令执行完成之后,查看对应目录
3、查看归档
hadoop fs -ls -R /output/wei.har
## 结果如下
-rw-r--r-- 3 bd supergroup 0 2021-07-01 16:35 /output/wei.har/_SUCCESS
-rw-r--r-- 5 bd supergroup 246 2021-07-01 16:35 /output/wei.har/_index
-rw-r--r-- 5 bd supergroup 23 2021-07-01 16:35 /output/wei.har/_masterindex
-rw-r--r-- 3 bd supergroup 42 2021-07-01 16:35 /output/wei.har/part-0
hadoop fs -ls -R har:///output/wei.har
## 结果如下
-rw-r--r-- 3 bd supergroup 15 2021-07-01 16:27 har:///output/wei.har/caocao
-rw-r--r-- 3 bd supergroup 13 2021-07-01 16:27 har:///output/wei.har/caopi
-rw-r--r-- 3 bd supergroup 14 2021-07-01 16:27 har:///output/wei.har/caozhi
### 要查看har文件,需要用har协议去查看
### 需要对该文件进行操作的话,要使用用har://+路径,例如下载的话
#### 例如下载的话,可以使用 hadoop fs -get har:///output/wei.har/caozhi .
4、解归档文件
## 原理就是通过cp命令将har中的所有文件拷贝
hadoop fs -cp har:///output/wei.har/* /sanguo
回收站
开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。
其中fs.trash.interval和fs.trash.checkpoint.interval的单位均为分钟。
1、修改core-site.xml,配置垃圾回收时间为1分钟,并配置访问垃圾回收站的用户为bd,并分发
<property>
<name>fs.trash.interval</name>
<value>1</value>
</property>
<property>
<name>hadoop.http.staticuser.user</name>
<value>bd</value>
</property>
2、重启集群
3、删除文件
hadoop fs -rm /sanguo/caocao
## 结果如下
21/07/01 16:58:31 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 1 minutes, Emptier interval = 0 minutes.
Moved: 'hdfs://hadoop113:9000/sanguo/caocao' to trash at: hdfs://hadoop113:9000/user/bd/.Trash/Current
删除成功之后,在./user/bd/.Trash/Current下有删除文件的信息,并且在1分钟之后被自动删除
注意:通过程序删除的文件不会经过回收站,需要调用 moveToTrash()才进入回收站
Trash trash = New Trash(conf);
trash.moveToTrash(path);
4、恢复数据
hadoop fs -mv /user/bd/.Trash/Current/sanguo/caocao /
5、清空回收站
hadoop fs -expunge
清空回收站的操作,及时将回收站中的所有文件放到一个文件夹(该文件夹的名称是一个时间戳)下,到了一定时间时候将其删除
快照管理
当写入发生时才会产生新的文件。
对于(3),没有指定名称的话,默认使用尝试文件的时间作为文件名
案例实操:
1、开启/禁用指定目录的快照功能
hdfs dfsadmin -allowSnapshot /sanguo/wei
## 结果如下
Allowing snaphot on /sanguo/wei succeeded
hdfs dfsadmin -disallowSnapshot /sanguo/wei
2、对目录创建快照
hdfs dfs -createSnapshot /sanguo/wei
## 结果如下
Created snapshot /sanguo/wei/.snapshot/s20210701-182041.033
备份文件中的内容与/sanguo/wei中完全相同
3、重命名快照
### 将快照名称改为weiSnapshot
hdfs dfs -renameSnapshot /sanguo/wei/ s20210701-172041.033 weiSnapshot
4、列出当前用户所有可以快照的目录
hdfs lsSnapshottableDir
## 结果如下
drwxr-xr-x 0 bd supergroup 0 2021-07-01 17:20 1 65536 /sanguo/wei
5、比较两个快照目录的不同指出
hdfs snapshotDiff /sanguo/wei . .snapshot/weiSnapshot
## 结果如下:
Difference between current directory and snapshot weiSnapshot under directory /sanguo/wei:
### 可以看到没有任何不同之处
# 上传一个文件
hadoop fs -put caozhang /sanguo/wei
# 再进行比较
hdfs snapshotDiff /sanguo/wei . .snapshot/weiSnapshot
## 结果如下:
Difference between current directory and snapshot weiSnapshot under directory /sanguo/wei:
M .
- ./caozhang
### 快照目录相比真实的少了caozhang这个文件
6、恢复快照
## 实际就是对文件的操作
hadoop fs -cp /sanguo/wei/.snapshot/weiSnapshot /weiSnapshot
版权声明:本文为clearlxj原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。