Hbase備份與恢復(快照技術)
阿新 • • 發佈:2020-09-16
什麼是快照
快照就是一份元資訊的合集,允許管理員恢復到表的先前狀態。快照不是表的複製而是一個檔名稱列表,因而不會複製資料。
快照的作用
HBase中存在的備份或克隆表的方法就是使用複製/匯出表或者在關閉表之後拷貝HDFS中的所有HFile。
複製或匯出是通過一系列工具呼叫MapReduce來掃描並複製表,這樣會對RegionServer有直接的影響。關閉表會停止所有的讀寫操作,實際環境中往往無法接受。
相比之下HBase快照允許管理員不拷貝資料,而直接克隆一張表,這對域伺服器產生的影響最小。將快照匯出至其他叢集不會直接影響到任何伺服器;匯出只是帶有一些額外邏輯的群間資料同步。
完全快照恢復是指恢復到之前的“表結構”以及當時的資料,快照之後發生的資料不會恢復。
快照優勢
匯出快照與複製/匯出表除了更好地保持一致性外,主要的不同在於匯出快照是在HDFS的層面操作的。 這意味著HMaster和域伺服器與操作無關。因此不需要為不必要的資料建立快取空間,也不會有掃描過程。因為大量物件建立引起的GC暫停,對於HBase 來說主要效能影響就是DataNode額外的網路和磁碟負載。
使用快照備份資料
1.配置檔案配置可以使用快照功能
<property> <name>hbase.snapshot.enabled</name> <value>true</value> </property>
2.新建一個快照
> snapshot 'www','www001'
3.檢視所有的快照
> list_snapshots
4.使用快照克隆一個表
> clone_snapshot 'www001','wwww'
5.恢復資料到快照
> disable 'www'
> restore_snapshot 'www001'
6.刪除快照
> delete_snapshot 'www001'
7.使用ExportSnapshot將當前快照匯出至其他叢集,匯出工具不會影響到域伺服器的負載,只是在HDFS層面,所以需要指定HDFS路徑(其它叢集的hbase根目錄)
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshotName -copy-to hdfs://server1:8082/hbase