HDFS-HDFS其他功能(二)

一、快照管理

快照相当于对目录做一个备份。并不会立即复制所有文件,而是指向同一个文件。当写入发生时,才会产生新文件。

1)基本语法

(1)hdfs dfsadmin -allowSnapshot 路径   (功能描述:开启指定目录的快照功能)

(2)hdfs dfsadmin -disallowSnapshot 路径 (功能描述:禁用指定目录的快照功能,默认是禁用)

(3)hdfs dfs -createSnapshot 路径        (功能描述:对目录创建快照)

(4)hdfs dfs -createSnapshot 路径 名称   (功能描述:指定名称创建快照)

(5)hdfs dfs -renameSnapshot 路径 旧名称 新名称 (功能描述:重命名快照)

(6)hdfs lsSnapshottableDir         (功能描述:列出当前用户所有已快照目录)

(7)hdfs snapshotDiff 路径1 路径2 (功能描述:比较两个快照目录的不同之处)

(8)hdfs dfs -deleteSnapshot <path> <snapshotName>  (功能描述:删除快照)

2)案例实操

(1)开启/禁用指定目录的快照功能

hdfs dfsadmin -allowSnapshot

hdfs dfsadmin -disallowSnapshot

(2)对目录创建快照

hdfs dfs -createSnapshot /user/itstar/data     // 对目录创建快照

用相同数据块

hdfs dfs -lsr /user/itstar/data/.snapshot/

(3)指定名称创建快照

hdfs dfs -createSnapshot

(4)重命名快照(注:快照是只读的,无法修改名)

hdfs dfs -renameSnapshot

注:路径只是你创建的名字/Andy,不要带后边的/Andy/.snapshot/,不然会出现

renameSnapshot: Modification on a read-only snapshot is disallowed

(5)列出当前用户所有可快照目录

hdfs lsSnapshottableDir

(6)比较两个快照目录的不同之处

hdfs snapshotDiff

(7)恢复快照

  1. 自定义创建一个快照名:hdfs dfs -createSnapshot /HAHA1 miaomiao
  2. 展示原文件包含内容:hadoop fs -ls
  3. 里面有三个文件、删除其中第三个  -- /HAHA1/.snapshot/miaomiao1
  4. 恢复快照:hdfs dfs -cp

(8)删除快照

hdfs dfs -deleteSnapshot

*********************************************************************

 

3)自己操练:

(1)基本语法-略

 

(2)案例实操:

 

开启指定目录的快照功能:hdfs dfsadmin -allowSnapshot /001   开启/001目录下的快照功能。

 

禁用指定目录的快照功能:hdfs dfsadmin -disallowSnapshot /001     将目录/001下的快照禁用。

 

再次开启此目录的快照功能--》hdfs lsSnapshottableDir      列出当前用户所有已快照目录

 

对目录创建快照:hdfs dfs -createSnapshot对/001目录 创建名为dj的快照。

 

重命名快照:hdfs dfs -renameSnapshot /001 s20200229-115403.207 dh       将/001目录下的s20200229-115403.207快照重命名为dh。

 

删除快照:hdfs dfs -deleteSnapshot /001 dj      删除/001目录下名为dj的快照

 

恢复快照:

(1)先创建:hdfs dfs -createSnapshotmiaomiao

 

(2)展示:hadoop fs -ls /001

 

(3)删除:hadoop fs -rm /001/c     删除/001目录下的c文件

 

miaomiao复制到/ABC目录中:hdfs dfs -cp /001/.snapshot/miaomiao /ABC。

即可在/ABC/miaomiao/目录下找到a b c 三个文件。

 

二、回收站

1)默认回收站

默认值fs.trash.interval=0,0表示禁用回收站,可以设置删除文件的存活时间。

默认值fs.trash.checkpoint.interval=0,检查回收站的间隔时间。

要求fs.trash.checkpoint.interval<=fs.trash.interval。

 

hdfs 删除tmp hdfs 删除快照_hadoop

2)启用回收站

修改core-site.xml,配置垃圾回收时间为1分钟。

<property>

    <name>fs.trash.interval</name>

1</value>

</property>

3)查看回收站

回收站在集群中的;路径:/user/itstar/.Trash/….

4)修改访问垃圾回收站用户名称

进入垃圾回收站用户名称,默认是dr.who,修改为itstar用户

[core-site.xml]

<property>

  <name>hadoop.http.staticuser.user</name>

itstar</value>

</property>

5)通过程序删除的文件不会经过回收站,需要调用moveToTrash()才进入回收站

Trash trash = New Trash(conf);

trash.moveToTrash(path);

6)恢复回收站数据

hadoop fs -mv /user/itstar/.Trash/Current/user/itstar/input    /user/itstar/input

7)清空回收站

hdfs dfs -expunge