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)恢复快照
- 自定义创建一个快照名:hdfs dfs -createSnapshot /HAHA1 miaomiao
- 展示原文件包含内容:hadoop fs -ls
- 里面有三个文件、删除其中第三个 -- /HAHA1/.snapshot/miaomiao1
- 恢复快照: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。
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