HDFS快照与配额

实验环境

hadoop版本:2.6.5

快照

HDFS快照(snapshot)是对文件系统子树在给定时刻的一个只读副本。由于并不真正复制数据,因此快照非常高效,它们简单的记录每个文件的元数据和块列表,这对于重构快照时刻的文件系统内容已经足够了。快照一般用于数据备份。
在HDFS中快照功能默认关闭。

  1. 开启快照

    $ hdfs dfs -lsr /test  #test为实验目录
    drwxr-xr-x   - hadoop supergroup          0 2018-07-13 23:52 /test/tmp
    -rw-r--r--   2 hadoop supergroup       1366 2018-07-13 23:52 /test/tmp/README.txt
    
    $ hdfs dfsadmin -allowSnapshot /test  #为test开启快照功能
    Allowing snaphot on /test succeeded
    
  2. 创建快照

    $ hdfs dfs -createSnapshot /test snap
    Created snapshot /test/.snapshot/snap
    
    # 快照创建后会在test/.snapshot/snap下创建一个与test一样的目录结构
    $ hdfs dfs -lsr  /test/.snapshot/snap
    drwxr-xr-x   - hadoop supergroup          0 2018-07-13 23:52 /test/.snapshot/snap/tmp
    -rw-r--r--   2 hadoop supergroup       1366 2018-07-13 23:52 /test/.snapshot/snap/tmp/README.txt
    
  3. 重命名快照

    $ hdfs dfs -renameSnapshot /test snap snap_1
    
    # 重命令后,快照目录也会被修改
    $ hdfs dfs -ls /test/.snapshot
     drwxr-xr-x   - hadoop supergroup          0 2018-07-14 01:08 /test/.snapshot/snap_1
    
  4. 比较快照与目录的不同

    hdfs snapshotDiff /test . snap_1  # test目录与其快照比较
    Difference between current directory and snapshot snap_1 under directory /test:
    
  5. 删除快照

     $ hdfs dfs -deleteSnapshot /test snap_1
    
  6. 列出当前用户的所有快照

    $ hdfs lsSnapshottableDir
    drwxr-xr-x 0 hadoop supergroup 0 2018-07-14 01:08 1 65536 /test
    
  7. 使用快照恢复文件

    $ hdfs dfs rmr /test/*  #删除test目录下的文件
    $ hdfs dfs -cp /test/.snapshot/snap_1/* /test  # 从快照目录下恢复
    
    $ hdfs dfs -lsr /test
    drwxr-xr-x   - hadoop supergroup          0 2018-07-14 01:22 /test/tmp
    -rw-r--r--   2 hadoop supergroup       1366 2018-07-14 01:22 /test/tmp/README.txt
    

配额

HDFS配额(quota)指对HDFS文件和目录的储存限制,就是管理员可以为用户所能使用的空间进行配额限制。比如最大只能使用2G等。

HDFS配额分为命名配额和空间配额。
目录配额:控制的目录所有文件/目录的个数,设置的数值N表示可以存放N - 1个子文件/目录。

  • 设置命名配额

    $ hdfs dfs -mkdir /quota   #新建/quota目录
    $ hdfs dfsadmin -setQuota 1 /quota  # 设置quota目录配额为1,即该目录不能创建子目录和子文件。
    $ hdfs dfs -mkdir /quota/1
    mkdir: The NameSpace quota (directories and files) of directory /quota is exceeded: quota=1 file count=2
    
  • 清除命名配额

    $ hdfs dfsadmin -clrQuota /quota
    

空间配额:控制目录的总大小。

  • 设置空间配额

    $ hdfs dfs -mkdir /space_quota     #新建目录space_quota
    $ hdfs dfsadmin -setSpaceQuota 128m /space_quota   #设置space_quota空间配额为128M
    
    $ ls -lh  test.zip
    -rw-r--r--. 1 hadoop hadoop 271M Jul 13 20:06 test.zip
    $ hdfs dfs -put test.zip  /space_quota #上传文件大于配额大小
    put: The DiskSpace quota of /space_quota is exceeded: quota = 134217728 B = 128 MB but diskspace consumed = 268435456 B = 256 MB
    
  • 清除空间配额

    $ hdfs dfsadmin -setSpaceQuota 20m /space_quota
    

总结

本文介绍了HDFS快照与配额的功能与使用。

猜你喜欢

转载自blog.csdn.net/cl2010abc/article/details/81043701