introduction to apache hbase snapshots
對照。
在之前,備份或者拷貝乙個表只能用copy/export表,或者disable表後,從hdfs中拷貝出所有hfile。copy/export錶用的是mapreduce來scan和copy表,這會對region server產生直接的效能影響,而用disable後拷貝檔案則是直接不能訪問了。
以此相反,hbase的snapshots功能可以讓管理員不用拷貝資料的情況下輕鬆拷貝table,並且只會對rs造成很小影響。匯出snapshots到另乙個集群不會直接作用於rs,只是新增一些額外的邏輯。
下面是一些實用snapshots的場景:
審查和/或報告指定時間的資料檢視
應用測試
離線作業
乙個snapshot其實就是一組metadata資訊的集合,它可以讓管理員將表恢復到以前的乙個狀態。snapshot並不是乙份拷貝,它只是乙個檔名的列表,並不拷貝資料。乙個全的snapshot恢復以為著你可以回滾到原來的表schema和建立snapshot之前的資料。
操作snapshot和copytable/exporttable最大的區別是snapshot僅涉及metadata,不涉及資料拷貝。
hbase乙個重要的設計就是一旦寫到乙個檔案就不會修改了。有不可修改的檔案意味著乙個snapshot僅需保持當前檔案的使用相關資訊就可以了, 並且,當compaction發生的時候,snapshot通知hbase系統僅把這些檔案歸檔而不要刪除它。
同樣,當轉殖或者恢復操作發生的時候,由於這些不變的檔案,當用snapshot建立新錶的時候僅需鏈結向這些不變的檔案就行了。
匯出snapshot是唯一需要拷貝資料的操作,這是因為其它的集群並沒有這些資料檔案。
除去更加好的一致性保證外,和copy/export作業相比,最大的不同是匯出snapshot操作是在hdfs層級進行的。這就意味著hbase的master和region server是不參與該操作的,因此snapshot匯出不會建立一些不必要的資料快取,並且也不會因為由於很多scan操作導致的gc。snapshot匯出操作產生的網路和磁碟開銷都被hdfs的datanode分攤吸收了。
要想使用snapshot功能,請確認你的hbase-site.xml中的hbase.snapshot.enabled
配置項為true,如下:
1
2
3
hbase.snapshot.enabled
4
5
true
6
7
建立乙個snapshot用如下命令,該操作沒有檔案拷貝操作:
1
hbase> snapshot 『tablename』, 『snapshotname』
要想知道系統中建立了哪些snapshot,可以用list_snapshot命令,它會顯示snapshot名,源表和建立時間日期。
1
hbase> list_snapshots
2
snapshot table + creation time
3
testsnapshot testtable (mon feb
25
21
:
13
:
49
+
0000
2013
)
要想移除snapshot,用delete_snapshot命令,移除snapshot不會對已經轉殖好的表和隨後發生的snapshot造成任何影響。
1
hbase> delete_snapshot 『snapshotname』
要想使用snapshot來建立乙個新錶,用clone_snapshot命令。該操作也無任何資料拷貝操作發生。
1
hbase> clone_snapshot 『snapshotname』, 『newtablename』
要是想恢復或者替換當前表的schema和資料,用restore_snapshot命令。
1
hbase> restore_snapshot 『snapshotname』
要想匯出乙個snapshot到另外的集群,用exportsnapshot工具。匯出操作不會對region server造成額外的負擔。因為它工作在hdfs層級,你僅需指定hdfs的位置(其它集群的hbase.rootdir)即可,如下。
1
hbase org.apache.hadoop.hbase.snapshot.exportsnapshot -snapshot
2
snapshotname -copy-to hdfs:
///srv2:8082/hbase
snapshots依賴於一些想當然的地方,當前還有很多新特性並沒有完全整合到工具裡:
當前的snapshot特性以及包括了所有基本功能,但是依然還有很多任務作要做,例如質量(metrics),web ui整合,磁碟使用優化等。
HBASE部分 HBASE的架構
hbase的架構 包含訪問hbase的介面並維護cache來加快對hbase的訪問 zookeeper 保證任何時候,集群中只有乙個master 存貯所有region的定址入口。實時監控region server的上線和下線資訊。並實時通知master 儲存hbase的schema和table元資料...
HBase學習之HBase的RowKey設計原則
hbase是三維有序儲存的,通過rowkey 行鍵 column key column family和qualifier 和timestamp 時間戳 這個三個維度可以對hbase中的資料進行快速定位。hbase中rowkey可以唯一標識一行記錄,在hbase查詢的時候,有以下幾種方式 通過get方...
HBase基礎 HBase的資料模型
命名空間,類似於關係型資料庫的 databbase 概念,每個命名空間下有多個表。hbase 有兩個自帶的命名空間,分別是 hbase 和 default,hbase 中存放的是 hbase 內建的表,default 表是使用者預設使用的命名空間。類似於關係型資料庫的表概念。不同的是,hbase 定...