HDFS snapshot操作实战
2017-08-07 13:26
211 查看
HDFS snapshot操作实战
Hadoop从2.1.0版开始提供了HDFS SnapShot的功能。一个snapshot(快照)是一个全部文件系统、或者某个目录在某一时刻的镜像。快照在下面场景下是非常有用:防止用户的错误操作:管理员可以通过以滚动的方式周期性设置一个只读的快照,这样就可以在文件系统上有若干份只读快照。如果用户意外地删除了一个文件,就可以使用包含该文件的最新只读快照来进行回复。
备份:管理员可以根据需求来备份整个文件系统,一个目录或者单一一个文件。管理员设置一个只读快照,并使用这个快照作为整个全量备份的开始点。增量备份可以通过比较两个快照的差异来产生。
试验/测试: 一个用户当想要在数据集上测试一个应用程序。一般情况下,如果不做该数据集的全量拷贝,测试应用程序会覆盖/损坏原来的生产数据集,这是非常危险的。管理员可以为用户设置一个生产数据集的快照(Read write)用于用户测试使用。在快照上的改变不会影响原有数据集。
灾难恢复:只读快照可以被用于创建一个一致的时间点镜像用于拷贝到远程站点作灾备冗余。
通过下面命令对某一个路径(根目录/,某一目录或者文件)开启快照功能,那么该目录就成为了一个snapshottable的目录。snapshottable下存储的snapshots 最多为65535个,保存在该目录的.snapshot下。
12 | hdfs dfsadmin -allowSnapshot /user/sparkAllowing snaphot on /user/spark succeeded |
1 2 | hdfs dfs -createSnapshot /user/spark s0 Created snapshot /user/spark/.snapshot/s0 |
12345678910111213141516171819202122232425262728293031 | #创建f1,f2,f3三个文件hdfs dfs -touchz /user/spark/tmp/f{1,2,3}#新建快照s1hdfs dfs -createSnapshot /user/spark s1Created snapshot /user/spark/.snapshot/s1#此时当前文件系统和s1中都包含f1,f2,f3三个文件hdfs dfs -ls -R /user/sparkdrwxr-xr-x - hdfs supergroup 0 2014-12-20 10:45 /user/spark/tmp-rw-r--r-- 3 hdfs supergroup 0 2014-12-20 10:45 /user/spark/tmp/f1-rw-r--r-- 3 hdfs supergroup 0 2014-12-20 10:45 /user/spark/tmp/f2-rw-r--r-- 3 hdfs supergroup 0 2014-12-20 10:45 /user/spark/tmp/f3#删除f3 hdfs dfs -rm /user/spark/tmp/f314/12/20 10:46:09 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 1440 minutes, Emptier interval = 0 minutes.Moved: 'hdfs://hdp01:8020/user/spark/tmp/f3' to trash at: hdfs://hdp01:8020/user/hdfs/.Trash/Current#查看快照内容,可以发现当前文件系统已经没有f3,而快照s1还有f3文件存在。这样,通过拷贝s1下的f3文件就可以进行恢复。hdfs dfs -ls -R /user/spark/.snapshotdrwxr-xr-x - hdfs supergroup 0 2014-12-20 10:28 /user/spark/.snapshot/s0drwxr-xr-x - hdfs supergroup 0 2014-12-20 10:45 /user/spark/.snapshot/s0/tmpdrwxr-xr-x - hdfs supergroup 0 2014-12-20 10:45 /user/spark/.snapshot/s1drwxr-xr-x - hdfs supergroup 0 2014-12-20 10:45 /user/spark/.snapshot/s1/tmp-rw-r--r-- 3 hdfs supergroup 0 2014-12-20 10:45 /user/spark/.snapshot/s1/tmp/f1-rw-r--r-- 3 hdfs supergroup 0 2014-12-20 10:45 /user/spark/.snapshot/s1/tmp/f2-rw-r--r-- 3 hdfs supergroup 0 2014-12-20 10:45 /user/spark/.snapshot/s1/tmp/f3hdfs dfs -ls -R /user/spark/drwxr-xr-x - hdfs supergroup 0 2014-12-20 10:46 /user/spark/tmp-rw-r--r-- 3 hdfs supergroup 0 2014-12-20 10:45 /user/spark/tmp/f1-rw-r--r-- 3 hdfs supergroup 0 2014-12-20 10:45 /user/spark/tmp/f2#RO的快照不能被修改,目前还没有找到RW的实现方法=。=hdfs dfs -touchz /user/spark/.snapshot/s1/f4touchz: Modification on a read-only snapshot is disallowed |
(1). 修改snapshot名称: hdfs dfs -renameSnapshot
1 2 3 4 5 | hdfs dfs -renameSnapshot /user/spark s0 s_init hdfs dfs -ls /user/spark/.snapshot Found 2 items drwxr-xr-x - hdfs supergroup 0 2014-12-20 10:45 /user/spark/.snapshot/s1 drwxr-xr-x - hdfs supergroup 0 2014-12-20 10:28 /user/spark/.snapshot/s_init |
12 | hdfs lsSnapshottableDir drwxr-xr-x 0 hdfs supergroup 0 2014-12-20 10:45 2 65536 /user/spark |
hdfs snapshotDiff
1 2 3 4 5 6 | hdfs snapshotDiff /user/spark s_init s1 Difference between snapshot s_init and snapshot s1 under directory /user/spark: M ./tmp + ./tmp/f1 + ./tmp/f2 + ./tmp/f3 |
hdfs dfs -deleteSnaphost
1 | hdfs dfs -deleteSnapshot /user/spark s_init |
hdfs dfsadmin -disallowSnapshot
1 | hdfs dfsadmin -disallowSnapshot /user/spark |
^^
参考:
https://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-hdfs/HdfsSnapshots.html http://zh.hortonworks.com/blog/snapshots-for-hdfs/
相关文章推荐
- HDFS snapshot操作实战
- HDFS snapshot操作实战
- HDFS snapshot操作实战
- hadoop hdfs java api操作实战
- 初探大数据-HDFS shell常用操作-实战三
- hadoop基础----hadoop实战(二)-----hadoop操作hdfs---hdfs文件系统常用命令
- hdfs snapshot hdfs快照操作
- Azkaban实战,Command类型单一job示例,任务中执行外部shell脚本,Command类型多job工作flow,HDFS操作任务,MapReduce任务,HIVE任务
- Hadoop之旅(8)— HDFS API 实战操作
- hadoop实战之hdfs常用操作工具类
- HDFS ACL操作实战
- mysql分库分表实战及php代码操作完整实例
- Scala深入浅出实战经典:37,List的foldLeft、foldRight、sort操作代码实战
- HDFS下的文件操作
- 哪部分区域、什么样的代码和操作可能导致内存溢出异常?(实战:OutOfMemoryError 异常)
- Spark API编程动手实战-04-以在Spark 1.2版本实现对union、groupByKey、join、reduce、lookup等操作实践
- iOS项目开发实战——如何进行延时操作
- HDFS的JAVA接口API操作实例
- HDFS学习笔记(5)IO读写操作之数据压缩
- x4412开发板&ibox卡片电脑项目实战20-C库函数文件操作实验