HDFS快照

Hdfs的快照(snapshot)是在某一时间点对指定文件系统拷贝,快照采用只读模式,可以对重要数据进行恢复、防止用户错误性的操作。
快照分两种:

 一种是:建立文件系统的索引,每次更新文件不会真正的改变文件,而是新开辟一个空间用来保存更改的文件,

 一种是:拷贝所有的文件系统。Hdfs属于前者。 Hdfs的快照的特征如下: 
  1. 快照的创建是瞬间的,代价为O(1),取决于子节点扫描文件目录的时间。
  2. 当且仅当做快照的文件目录下有文件更新时才会占用小部分内存,占用内存的大小为
    O(M),其中M为更改文件或者目录的数量;
  3. 新建快照的时候,Datanode中的block不会被复制,快照中只是记录了文件块的列表和
    大小信息。
  4. 快照不会影响正常的hdfs的操作。对做快照之后的数据进行的更改将会按照时间顺序逆
    序的记录下来,用户访问的还是当前最新的数据,快照里的内容为快照创建的时间点时文件的内容减去当前文件的内容。

每个快照最高限额为65536个文件或者文件夹,在快照的子文件夹中不允许在创建新的快照。

注意,mv命令和del命令是不允许的,因为快照是只读的

  1. /demo/snapshot目录下启用快照
[[email protected] hadoop]# hdfs dfsadmin -allowSnapshot /demo/data
Allowing snapshot on /demo/data 	succeeded
  1. 创建快照
[[email protected] hadoop]# hdfs dfs -createSnapshot /demo/data data_image         
Created snapshot /demo/data/.snapshot/data_image
  1. 查看快照信息
    [[email protected] hadoop]# hdfs dfs -ls -r /demo/data/.snapshot/data_image Found 1 items -rw-r--r-- 3 root supergroup 6 2019-04-17 02:39 /demo/data/.snapshot/data_image/1.txt

  2. web访问快照信息
    HDFS快照
    快照并不会产生新的文件,我们可以通过查看ID
    HDFS快照

  3. 对HDFS的文件进行修改

[[email protected] hadoop]# hdfs dfs -rm /demo/data/1.txt                
Deleted /demo/data/1.txt

6.查看快照

[[email protected] hadoop]# hdfs dfs -ls /demo/data/1.txt
ls: `/demo/data/1.txt': No such file or directory
[[email protected] hadoop]# hdfs dfs -ls /demo/data/.snapshot/data_image
Found 1 items
-rw-r--r--   3 root supergroup          6 2019-04-17 02:39 /demo/data/.snapshot/data_image/1.txt