实验环境
hadoop版本:3.2.4
快照
HDFS快照(snapshot)是对文件系统子树在给定时刻的一个只读副本。由于并不真正复制数据,因此快照非常高效,它们简单的记录每个文件的元数据和块列表,这对于重构快照时刻的文件系统内容已经足够了,快照一般用于数据备份。
在HDFS中快照功能默认关闭。
-
开启快照
[root@hadoop1 ~]# hdfs dfs -ls /test #test为实验目录 Found 2 items -rw-r--r-- 3 root supergroup 12 2024-10-16 02:59 /test/a.txt drwxr-xr-x - root supergroup 0 2024-10-16 03:00 /test/tmp [root@hadoop1 ~]# hdfs dfsadmin -allowSnapshot /test Allowing snapshot on /test succeeded
-
创建快照
[root@hadoop1 ~]# hdfs dfs -createSnapshot /test snap Created snapshot /test/.snapshot/snap # 快照创建后会在test/.snapshot/snap下创建一个与test一样的目录结构 [root@hadoop1 ~]# hdfs dfs -ls -R /test/.snapshot/snap -rw-r--r-- 3 root supergroup 12 2024-10-16 02:59 /test/.snapshot/snap/a.txt drwxr-xr-x - root supergroup 0 2024-10-16 03:00 /test/.snapshot/snap/tmp
-
重命名快照
[root@hadoop1 ~]# hdfs dfs -renameSnapshot /test snap snap_1 # 重命名后,快照目录也会被修改 [root@hadoop1 ~]# hdfs dfs -ls /test/.snapshot Found 1 items drwxr-xr-x - root supergroup 0 2024-10-16 03:02 /test/.snapshot/snap_1
-
比较快照与目录的不同
[root@hadoop1 ~]# hdfs snapshotDiff /test . snap_1 # test目录与其快照比较 Difference between current directory and snapshot snap_1 under directory /test:
-
列出当前用户的所有快照
[root@hadoop1 ~]# hdfs lsSnapshottableDir drwxr-xr-x 0 root supergroup 0 2024-10-16 03:02 1 65536 /test
-
使用快照恢复文件
#删除test目录下的文件 [root@hadoop1 ~]# hdfs dfs -rmr /test/* rmr: DEPRECATED: Please use '-rm -r' instead. Deleted /test/a.txt Deleted /test/tmp # 从快照目录下恢复 [root@hadoop1 ~]# hdfs dfs -cp /test/.snapshot/snap_1/* /test [root@hadoop1 ~]# hdfs dfs -ls -R /test -rw-r--r-- 3 root supergroup 12 2024-10-16 03:12 /test/a.txt drwxr-xr-x - root supergroup 0 2024-10-16 03:12 /test/tmp
-
删除快照
[root@hadoop1 ~]# hdfs dfs -deleteSnapshot /test snap_1
配额
HDFS配额(quota)指对HDFS文件和目录的储存限制,就是管理员可以为用户所能使用的空间进行配额限制。比如最大只能使用2G等,HDFS配额分为命名配额和空间配额。
目录配额:控制的目录所有文件/目录的个数,设置的数值N表示可以存放N - 1个子文件/目录。
-
设置命名配额
[root@hadoop1 hadoop-3.2.4]# hdfs dfs -mkdir /quota #新建/quota目录 [root@hadoop1 hadoop-3.2.4]# hdfs dfsadmin -setQuota 1 /quota # 设置quota目录配额为1,即该目录不能创建子目录和子文件。 [root@hadoop1 hadoop-3.2.4]# hdfs dfs -mkdir /quota/1 mkdir: The NameSpace quota (directories and files) of directory /quota is exceeded: quota=1 file count=2
-
清除命名配额
[root@hadoop1 hadoop-3.2.4]# hdfs dfsadmin -clrQuota /quota
空间配额:控制目录的总大小。
-
设置空间配额
[root@hadoop1 hadoop-3.2.4]# hdfs dfs -mkdir /space_quota #新建目录space_quota [root@hadoop1 hadoop-3.2.4]# hdfs dfsadmin -setSpaceQuota 128m /space_quota #设置space_quota空间配额为128M [root@hadoop1 hadoop-3.2.4]# ls -lh file.txt -rw-r--r--. 1 root root 130M Oct 15 23:01 file.txt [root@hadoop1 ~]# hdfs dfs -put file.txt /space_quota #上传文件大于配额大小 put: The DiskSpace quota of /space_quota is exceeded: quota = 134217728 B = 128 MB but diskspace consumed = 402653184 B = 384 MB
-
清除空间配额
[root@hadoop1 hadoop-3.2.4]# hdfs dfsadmin -clrSpaceQuota /space_quota