Hadoop基础-Hadoop快照管理

时间:2021-01-15 21:13:00

                Hadoop基础-Hadoop快照管理

                                 作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.快照的作用

  快照可以迅速对文件(夹)进行备份,不产生新文件,使用差值存储,默认是禁用状态。因此,想要使用快照功能的话得先启用该功能!我们可以通过“hdfs dfsadmin” 命令来启动或者禁止快照管理。

1>.启用快照

[root@yinzhengjie ~]# hdfs dfsadmin -allowSnapShot /data
Allowing snaphot on /data succeeded
[root@yinzhengjie ~]#

2>.禁用快照

[root@yinzhengjie ~]# hdfs dfsadmin -disallowSnapShot /data
Disallowing snaphot on /data succeeded
[root@yinzhengjie ~]#

二.创建快照

1>.创建快照

[root@yinzhengjie ~]# hdfs dfs -ls -R /
drwxr-xr-x - root supergroup -- : /data
drwxr-xr-x - root supergroup -- : /data/etc
-rw-r--r-- root supergroup -- : /data/index.html
-rw-r--r-- root supergroup -- : /data/name.txt
-rw-r--r-- root supergroup -- : /data/yinzhengjie.sql
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# echo "hello" > .txt
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# echo "world" > .txt
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# hdfs dfs -put .txt /data
[root@yinzhengjie ~]# hdfs dfs -put .txt /data/etc
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# hdfs dfs -ls -R /
drwxr-xr-x - root supergroup -- : /data
-rw-r--r-- root supergroup -- : /data/.txt
drwxr-xr-x - root supergroup -- : /data/etc
-rw-r--r-- root supergroup -- : /data/etc/.txt
-rw-r--r-- root supergroup -- : /data/index.html
-rw-r--r-- root supergroup -- : /data/name.txt
-rw-r--r-- root supergroup -- : /data/yinzhengjie.sql
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# hdfs dfsadmin -allowSnapshot /data #启用快照功能
Allowing snaphot on /data succeeded
[root@yinzhengjie ~]# hdfs dfs -createSnapshot /data firstSnapshot #创建快照并起名为“firstSnapshot”。下面一行显示了快照的实际存放位置在一个隐藏目录下。
Created snapshot /data/.snapshot/firstSnapshot
[root@yinzhengjie ~]#

2>.查看快照的存放位置

[root@yinzhengjie ~]# hdfs dfs -ls -R /data/.snapshot/firstSnapshot
-rw-r--r-- root supergroup -- : /data/.snapshot/firstSnapshot/.txt
drwxr-xr-x - root supergroup -- : /data/.snapshot/firstSnapshot/etc
-rw-r--r-- root supergroup -- : /data/.snapshot/firstSnapshot/etc/.txt
-rw-r--r-- root supergroup -- : /data/.snapshot/firstSnapshot/index.html
-rw-r--r-- root supergroup -- : /data/.snapshot/firstSnapshot/name.txt
-rw-r--r-- root supergroup -- : /data/.snapshot/firstSnapshot/yinzhengjie.sql
[root@yinzhengjie ~]#

3>.webUI查看快照信息

Hadoop基础-Hadoop快照管理

三.验证创建快照后是否产生新的文件

1>.查看快照中的文件

Hadoop基础-Hadoop快照管理

2>.查看同一文件实际存储的信息

Hadoop基础-Hadoop快照管理

3>.创建快照后修改文件数据

[root@yinzhengjie ~]# hdfs dfs -ls -R /
drwxr-xr-x - root supergroup -- : /data
-rw-r--r-- root supergroup -- : /data/.txt
drwxr-xr-x - root supergroup -- : /data/etc
-rw-r--r-- root supergroup -- : /data/etc/.txt
-rw-r--r-- root supergroup -- : /data/index.html
-rw-r--r-- root supergroup -- : /data/name.txt
-rw-r--r-- root supergroup -- : /data/yinzhengjie.sql
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# ll
total
-rw-r--r--. root root May : jdk-8u131-linux-x64.tar.gz
-rw-r--r--. root root May : name.txt
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# hdfs dfs -cat /data/.txt
hello
[root@yinzhengjie ~]# hdfs dfs -appendToFile name.txt /data/.txt
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# hdfs dfs -cat /data/.txt
hello
yinzhengjie
[root@yinzhengjie ~]# hdfs dfs -cat /data/.snapshot/firstSnapshot/.txt
hello
[root@yinzhengjie ~]#

4>.小结快照的特点

  a>.生成隐藏目录(“.snapshot”)

    创建快照时,会在床快快照的目录下生成一个“.snapshot”的隐藏目录,该目录下保存了一个子目录,这个子目录名称就是快照的名称,该目录下存放的都是创建快照时间节点的数据。

  b>.快照并不产生新的文件

    这个不产生新的文件指的是不完全克隆一份数据出来,而是将数据都指向了同一个存储的ID啦,从上图我们可以很明显的看出来。

  c>.修改源文件跟快照无关

    当我们源文件时,快照中保存的数据并不会受到影响,快照保存的诗句还是当时创建快照的时间节点数据。

四.快照的其他操作

1>.快照的重命名操作

[root@yinzhengjie ~]# hdfs dfs -ls /data/.snapshot/
Found items
drwxr-xr-x - root supergroup -- : /data/.snapshot/firstSnapshot
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# hdfs dfs -renameSnapshot /data firstSnapshot newSnapshot #将/data目录的firstSnapshot快照名称改名为newSnapshot
[root@yinzhengjie ~]# hdfs dfs -ls /data/.snapshot/
Found items
drwxr-xr-x - root supergroup -- : /data/.snapshot/newSnapshot
[root@yinzhengjie ~]#

2>.快照的删除操作

[root@yinzhengjie ~]# hdfs dfs -ls /data/.snapshot/
Found items
drwxr-xr-x - root supergroup -- : /data/.snapshot/newSnapshot
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# hdfs dfs -deleteSnapshot /data newSnapshot
[root@yinzhengjie ~]#
[root@yinzhengjie ~]# hdfs dfs -ls /data/.snapshot/
[root@yinzhengjie ~]#