1. 程式人生 > 實用技巧 >Hbase備份與恢復(快照技術)

Hbase備份與恢復(快照技術)

什麼是快照

快照就是一份元資訊的合集,允許管理員恢復到表的先前狀態。快照不是表的複製而是一個檔名稱列表,因而不會複製資料。

快照的作用

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