使用snapshot實現hdfs文件備份和恢復實戰


通過snapshot實現 hdfs上文件的備份

api地址請見http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.5.0-cdh5.2.0/hadoop-project-dist/hadoop-hdfs/HdfsSnapshots.html

==========================================================================================

1、允許創建快照

首先,在你想要進行備份的文件夾下面 執行命令,允許該文件夾創建快照

hdfs dfsadmin -allowSnapshot <path>

例如:hdfs dfsadmin -allowSnapshot /Workspace/linlin

出現此命令證明已經允許創建快照成功

=================================================================================================

2、創建快照

接下來就開始對此文件夾進行備份

hdfs dfs -createSnapshot <path> [name]

例如 hdfs dfs -createSnapshot /Workspace/linlin bak1 

此命令出現證明已經創建快照成功

 

此時我們可以考慮一下是否能夠在linlin子目錄創建快照

hdfs'上目錄結構如圖所示

然后嘗試在snaptest上建立快照

hdfs dfs -createSnapshot /Workspace/linlin/snaptest bak2 

報錯,可見,只能在你允許的目錄下面建立快照;

 

第一次快照  bak1 時候 沒有snaptest文件夾,現在多了snaptest文件夾,再創建一次快照

若還是用

hdfs dfs -createSnapshot /Workspace/linlin  bak1

有錯誤提示,快照名字已經存在

執行  hdfs dfs -createSnapshot /Workspace/linlin  bak2

創建成功;

==============================================================================================================

3、查看快照

查看所有的snapshottable

   hdfs lsSnapshottableDir

查看到曾經允許創建快照的所有目錄
查看當前快照下的文件  hadoop sanpshot 創建快照時候,默認的文件夾是.snapshot 查看時候必須加上.snapshot才能看到里面備份的東西;
.snapshot是后來hadoop才有的產物,所以之前若是有文件夾命名為snapshot關鍵字就不能創建快照了;
 
        
執行命令 hdfs dfs -ls /Workspace/linlin/.snapshot/

 

能夠看到 這個快照下 有三個備份 分別是 bak1 、bak2 、 linlin

===========================================================================================================

4、對比快照

進行快照之間的對比,看到兩個快照之間備份文件的區別

執行命令  

hdfs snapshotDiff <path> <fromSnapshot> <toSnapshot>
例如: 
執行命令 hdfs snapshotDiff  /Workspace/linlin bak1 bak2 

結果 Results:
+ The file/directory has been created.
- The file/directory has been deleted.
M The file/directory has been modified.
R The file/directory has been renamed.
這里出現M 代表我對linlin文件夾進行了修改,+代表新增了一個文件夾 snaptest
============================================================================================================================
5、恢復快照
恢復快照:

hdfs dfs -cp <path> <path>

例如: hdfs dfs -cp /Workspace/linlin/.snapshot/bak2/snaptest  /Workspace

查看hdfs目錄:

已經成功恢復到 Workspace
==================================================================================================================================
題外話:
我們可以嘗試着刪除建立過快照的文件夾:是無法刪除的,會提示

存在快照無法刪,證明若是在文件夾下面建立快照,文件夾就無法刪除或者移動

原文:http://www.nosqlcn.com/ShowArticle/23


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM