HDFS快照是一個只讀的基于時間點文件系統(tǒng)拷貝??煺湛梢允钦麄€文件系統(tǒng)的 也可以是一部分。常用來作為數(shù)據(jù)備份,防止用戶錯誤和容災(zāi)快照功能。
HDFS實現(xiàn)功能:
- Snapshot 創(chuàng)建的時間 復(fù)雜度為O(1),但是不包括INode 的尋找時間
- 只有當(dāng)修改SnapShot時,才會有額外的內(nèi)存占用,內(nèi)存使用量為O(M),M 為修改的文件 或者目錄數(shù)
- 在DataNode上面的blocks 不會復(fù)制,做Snapshot 的文件是紀(jì)錄了block的列表和文件的 大小,但是沒有數(shù)據(jù)的復(fù)制
- Snapshot 并不會影響HDFS 的正常操作:修改會按照時間的反序記錄,這樣可以直接讀 取到最新的數(shù)據(jù)??煺諗?shù)據(jù)是當(dāng)前數(shù)據(jù)減去修改的部分計算出來的。
快照命令
- 設(shè)置一個目錄為可快照
$ bin/hdfs dfsadmin -allowSnapshot <path> - 取消目錄可快照
$ bin/hdfs dfsadmin -disallowSnapshot <path> - 生成快照
$ bin/hdfs dfs -createSnapshot <path> [<snapshotName>] - 刪除快照
$ bin/hdfs dfs -deleteSnapshot <path> <snapshotName> - 列出所有可快照目錄
$ bin/hdfs lsSnapshottableDir - 比較快照之間的差異
$ bin/hdfs snapshotDiff <path> <fromSnapshot> <toSnapshot>
具體例子看光官網(wǎng)