Apache hdfs snapshot使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dazuiba008/article/details/80745212
HDFS快照是某个时间点文件的复制,而且是只读的,快照用来做数据的备份,在发生灾难的时候,可以恢复数据

但是一定注意,快照不是对数据块的复制,所以在datanode节点并不是做数据库的复制,快照只是记录块存储的列表和文件的大小.

下面举例看一下快照的实际使用
首先允许改目录创建快照
[root@192-168-100-142 security]# hdfs dfsadmin -allowSnapshot /hank/data01
Allowing snaphot on /hank/data01 succeeded
创建快照
[root@192-168-100-142 security]# hdfs dfs -createSnapshot /hank/data01 data01-20180619-snapshot
Created snapshot /hank/data01/.snapshot/data01-20180619-snapshot
查看快照
[root@192-168-100-142 security]# hdfs dfs -ls /hank/data01/.snapshot/data01-20180619-snapshot
Found 3 items
-rw-r--r--   2 root supergroup  439999947 2018-06-05 15:46 /hank/data01/.snapshot/data01-20180619-snapshot/bigdata.txt
-rw-r--r--   3 root supergroup        106 2018-06-05 15:42 /hank/data01/.snapshot/data01-20180619-snapshot/t2.sh
-rw-r--r--   3 root supergroup         31 2018-06-15 17:47 /hank/data01/.snapshot/data01-20180619-snapshot/zhanghaihong.txt
添加两个文件
[root@192-168-100-142 security]# hdfs dfs -touchz /hank/data01/test1.txt
[root@192-168-100-142 security]# hdfs dfs -touchz /hank/data01/test2.txt
查看与之前的对比多出两个文件
[root@192-168-100-142 security]# hadoop fs -ls /hank/data01
Found 5 items
-rw-r--r--   2 root supergroup  439999947 2018-06-05 15:46 /hank/data01/bigdata.txt
-rw-r--r--   3 root supergroup        106 2018-06-05 15:42 /hank/data01/t2.sh
-rw-r--r--   3 root supergroup          0 2018-06-20 13:47 /hank/data01/test1.txt
-rw-r--r--   3 root supergroup          0 2018-06-20 13:47 /hank/data01/test2.txt
-rw-r--r--   3 root supergroup         31 2018-06-15 17:47 /hank/data01/zhanghaihong.txt
添加文件后再创建一个快照
[root@192-168-100-142 security]# hdfs dfs -createSnapshot /hank/data01 data01-20180620-snapshot
Created snapshot /hank/data01/.snapshot/data01-20180620-snapshot
比较两个快照的不同
[root@192-168-100-142 security]# hdfs snapshotDiff /hank/data01 data01-20180619-snapshot data01-20180620-snapshot
Difference between snapshot data01-20180619-snapshot and snapshot data01-20180620-snapshot under directory /hank/data01:
M       .
+       ./test1.txt
+       ./test2.txt
删除目录中的文件
[root@192-168-100-142 security]# hadoop fs -rm -r /hank/data01/*
恢复到创建两个文件之前的时刻
[root@192-168-100-142 security]# hdfs dfs -cp -ptopax /hank/data01/.snapshot/data01-20180619-snapshot/* /hank/data01
[root@192-168-100-142 security]# hadoop fs -ls /hank/data01/
Found 3 items
-rw-r--r--   3 root supergroup  439999947 2018-06-05 15:46 /hank/data01/bigdata.txt
-rw-r--r--   3 root supergroup        106 2018-06-05 15:42 /hank/data01/t2.sh
-rw-r--r--   3 root supergroup         31 2018-06-15 17:47 /hank/data01/zhanghaihong.txt

相关命令

hdfs dfsadmin -allowSnapshot /hank/data01  => 允许这个文件路径可以创建snapshots
hdfs dfs -createSnapshot /hank/data01 data01-20180619-snapshot => 创建snapshots
hdfs dfs -ls /hank/data01/.snapshot/data01-20180619-snapshot => 查看snapshots
hdfs dfs -touchz /hank/data01/test1.txt => 不小心往文件中写入了一个错误数据文件
hdfs dfs -touchz /hank/data01/test2.txt => 不小心往文件中写入了一个错误数据文件
hdfs dfs -createSnapshot /hank/data01 data01-20180620-snapshot => 创建snapshots
hdfs snapshotDiff /hank/data01 data01-20180619-snapshot data01-20180620-snapshot
hdfs dfs -cp -ptopax /hank/data01/.snapshot/data01-20180619-snapshot/* /hank/data01 => 恢复文件
hdfs dfs -deleteSnapshot  data01-snapshot-20180619	 => 删除snapshots
hdfs dfs -renameSnapshot /hank/data01 data01-20180619-snapshot new_snapshot-name => 重命名snapshots
hdfs lsSnapshottableDir => 列出可以snapshots的目录
hdfs dfsadmin -disallowSnapshot <path> => 不允许这个path创建snapshots

猜你喜欢

转载自blog.csdn.net/dazuiba008/article/details/80745212