我們在 Cloudera 中有一個集群。我們正在使用 HDFS 快照進行備份。最近我們看到 HDFS 中使用的空間一直在顯著增長。我們懷疑這是因為我們用于備份的快照。
當我們嘗試查看目錄的大小時,我們會看到以下內容:
hdfs dfs -du -s -h 路徑
12.4 T 76.8 T 路徑
當我們嘗試查看此目錄的大小時,我們看到了完全不同的事情:
hdfs dfs -du -h -s -x
12.4 噸 37.2 噸
我們還嘗試在此查看快照的大小。尺寸如下:
hdfs dfs -du -s -h <path>/.snapshot
9.1 T 63.6 T <path>/.snapshot/snap-new
10.9 T 68.0 T <path>/.snapthot/snap-old
12.4 T 37.2 T <path>/.snapshot/snap-of-today
我的問題是,如果我洗掉所有這些快照(新快照、舊快照、今天快照),我們將開始看到類似數字 2 的大小?
如果沒有,我該怎么做才能開始看到類似數字 2 的大小?
提前致謝!
uj5u.com熱心網友回復:
HDFS 無法查看特定快照使用了多少空間。通常,最舊的快照將使用最多的空間,但這取決于您何時洗掉和重新加載資料。洗掉資料時,不會洗掉快照涵蓋的任何資料。從你的 du 輸出:
12.4 T 76.8 T path
注意 3 x 12.4 = 37.2。因此,您所有的快照都使用 76.8 - 37.2 = 39.6 T,超出了使用 37.2T 的實時檔案系統中的資料。-x 開關排除快照資料,并在實時檔案系統中顯示 37.2T。
您可以通過在快照目錄上運行 du 看到,它只是告訴您在捕獲快照時快照中的檔案使用了多少空間。其中一些空間將在所有快照甚至實時檔案系統之間共享,因此您不知道哪個快照占用的空間最多。
如果洗掉快照,從最舊的開始,空間使用量應該會減少。
如果您的集群有頻繁洗掉和重新創建大量資料的作業負載,快照將大大增加您對集群的空間需求。
uj5u.com熱心網友回復:
如果您洗掉快照,您將使用更少的記憶體。
提醒一下為什么快照會隨著時間變大:
HDFS Snapshots 的實作是高效的:
快照創建是即時的:成本為 O(1),不包括 inode 查找時間。僅當相對于快照進行修改時才會使用額外的記憶體:記憶體使用量為 O(M),其中 M 是修改后的檔案/目錄的數量。資料節點中的塊不會被復制:快照檔案記錄了塊串列和檔案大小。沒有資料復制。快照不會對常規 HDFS 操作產生不利影響:修改按時間倒序記錄,以便可以直接訪問當前資料。快照資料是通過從當前資料中減去修改來計算的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/378968.html
上一篇:使用ISODate轉換查詢
