Hadoop-HDFS2.X新特性介绍

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版权协议,转载请附上原文出处链接和本声明。