什么是快照
快照就是一份元信息的合集,允許管理員恢復到表的先前狀態。快照不是表的復制而是一個文件名稱列表,因而不會復制數據。
快照的作用
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