一篇關(guān)于HDFS的快照講解
本文轉(zhuǎn)載自微信公眾號「大數(shù)據(jù)技術(shù)派」,作者柯柯。轉(zhuǎn)載本文請聯(lián)系大數(shù)據(jù)技術(shù)派公眾號。
一個snapshot(快照)是一個全部文件系統(tǒng)、或者某個目錄在某一時刻的鏡像,使用vmware類似軟件的同學指定,快照可以為虛擬機保存某個狀態(tài),如果做了更改,或者系統(tǒng)被折騰壞,還有個復原的操作。
快照應用在如下場景中:
- 防止用戶的錯誤操作;
- 備份:給hdfs目錄做快照,然后復制快照里面的文件到備份;
- 試驗/測試
- 災難恢復
HDFS的快照操作
這里測試的Hadoop3.0版本,也是我的線上版本。
開啟快照
- hdfs dfsadmin -allowSnapshot /data/test/test_snapshot
- [hdfs@cdh-003 ~]$ hdfs dfs -ls /data/test/test_snapshot
- -rw-r--r-- 2 hdfs supergroup 88 2021-10-08 16:59 /data/test/test_snapshot/ods_user1.txt
這里開啟目錄/data/test/test_snapshot快照功能,該目錄當前有一個文件ods_user1.txt。
創(chuàng)建快照
給目錄/data/test/test_snapshot創(chuàng)建了一個快照,名為backup01。
- hdfs dfs -createSnapshot /data/test/test_snapshot backup01
- [hdfs@cdh-003 ~]$ hdfs dfs -ls /data/test/test_snapshot/.snapshot/backup01
- Found 1 items
- -rw-r--r-- 2 hdfs supergroup 88 2021-10-08 16:59 /data/test/test_snapshot/.snapshot/backup01/ods_user1.txt
可以看到實際上是在開啟快照的目錄下新建了一個文件夾.snapshot,下面有個目錄backup01,里面有一個文件,相當于復制了一份文件。
查看快照
- hdfs lsSnapshottableDir
再上傳一個文件
- hdfs dfs -put data/urls.txt /data/test/test_snapshot
再創(chuàng)建一個快照
- hdfs dfs -createSnapshot /data/test/test_snapshot backup02
這里又新建了一個快照backup02,.snapshot下面有兩個目錄,分別是backup01和backup02。
- [hdfs@cdh-003 ~]$ hdfs dfs -ls /data/test/test_snapshot/.snapshot
- Found 3 items
- drwxr-xr-x - hdfs supergroup 0 2021-10-08 17:04 /data/test/test_snapshot/.snapshot/backup01
- drwxr-xr-x - hdfs supergroup 0 2021-10-08 17:12 /data/test/test_snapshot/.snapshot/backup02
對比快照
因為后來又上傳了一個文件,所以快照backup02下面有2個文件了,比backup01多一個文件urls.txt。
- [hdfs@cdh-003 ~]$ hdfs snapshotDiff /data/test/test_snapshot backup01 backup02
- Difference between snapshot backup01 and snapshot backup02 under directory /data/test/test_snapshot:
- M .
- + ./urls.txt
恢復快照如果不小心把文件刪除了,這個文件就被移動到回收站(如果開啟了回收站),如果回收站到期清理了或者沒有開啟回收站,這個時候快照的作用就發(fā)揮出來了,直接cp過去。
- hdfs dfs -cp /data/test/test_snapshot/.snapshot/backup01/ods_user1.txt /data/test/test_snapshot