本文固定链接:https://www.askmac.cn/archives/hadoop-snapshots-try.html
1 实验环境
hadoop 2.7 jdk 1.8
在之前的单namenode非HA的hadoop环境中进行,其中3个datanode
各个节点分布如下:
10.0.0.22 dbdao # NameNode 10.0.0.23 dbdao2 # ResourceManager 10.0.0.24 dbdao3 # web app proxy and MR Jobhistory server 10.0.0.25 dbdao4 # DataNode 10.0.0.26 dbdao5 # DataNode 10.0.0.27 dbdao6 # DataNode
2 创建快照
2.1 在hdfs中创建snapshottable目录
hdfs dfs -mkdir /hadoop-snapshot
然后检查目录是否成功创建
hdfs dfs -ls /
最后允许快照
hdfs dfsadmin -allowSnapshot /hadoop-snapshot
2.2 生成测试文件
hdfs dfs -mkdir -p /usr/dbdao/test hdfs dfs -put /usr/local/hadoop/conf/* /usr/dbdao/test hdfs dfs -ls /usr/dbdao/test
确保有测试文件已经传入hdfs文件系统
2.3 创建快照
得到有权限创建快照的目录:
hdfs lsSnapshottableDir
生成快照:
hdfs dfs -createSnapshot /hadoop-snapshot
可以看到按照默认的命名方式在.snapshot 子目录生成了一个快照
3快照对比
3.1对测试文件进行操作
删除文件
hdfs dfs -rm /usr/dbdao/test/yarn-env.cmd
增加新文件
echo 0 > test.ls dbdao@dbdao6:~$ hdfs dfs -put test.ls /usr/dbdao/test
移动文件和目录
hdfs dfs -mv /usr/dbdao/test/core-site.xml /usr/dbdao/test/ /hadoop-snapshot
–将一个文件和整个目录移动到/hadoop-snapshot中
多次移动目录
hdfs dfs -mv /hadoop-snapshot/test / hdfs dfs -mv /test /usr/dbdao
3.2 再次生成新快照
hdfs dfs -createSnapshot /hadoop-snapshot
3.3 生成快照对比报告
hdfs dfs -ls /hadoop-snapshot/.snapshot hdfs snapshotDiff /hadoop-snapshot s20151101-143101.565 s20151101-144905.893
可以发现,对于快照目录 /hadoop-snapshot来说,是新增了一个文件core-sit.xml
也就是说快照只记录快照目录的修改操作。其他的无关操作不会记录 。
可以发现快照目录中存有记录,是按时间反序排列的:
4.移除快照,删除快照目录
删除所有快照
可以单独一个个删除快照:
hdfs dfs -deleteSnapshot /hadoop-snapshot/ s20151101-143101.565 hdfs dfs -deleteSnapshot /hadoop-snapshot/ s20151101-144905.893
取消快照:
hdfs dfsadmin -disallowSnapshot /hadoop-snapshot
—–注意在取消快照之前.snapshot目录是只读的,不能被rm,rmdir操作。
Comment