HBase的Snapshots功能介紹

2021-09-02 04:42:01 字數 2939 閱讀 7965

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

3hbase.snapshot.enabled

4

5true

6

7

建立乙個snapshot用如下命令,該操作沒有檔案拷貝操作:

1hbase> snapshot 『tablename』, 『snapshotname』

要想知道系統中建立了哪些snapshot,可以用list_snapshot命令,它會顯示snapshot名,源表和建立時間日期。

1hbase> list_snapshots

2snapshot table + creation time

3testsnapshot testtable (mon feb2521:13:49+00002013)

要想移除snapshot,用delete_snapshot命令,移除snapshot不會對已經轉殖好的表和隨後發生的snapshot造成任何影響。

1hbase> delete_snapshot 『snapshotname』

要想使用snapshot來建立乙個新錶,用clone_snapshot命令。該操作也無任何資料拷貝操作發生。

1hbase> clone_snapshot 『snapshotname』, 『newtablename』

要是想恢復或者替換當前表的schema和資料,用restore_snapshot命令。

1hbase> restore_snapshot 『snapshotname』

要想匯出乙個snapshot到另外的集群,用exportsnapshot工具。匯出操作不會對region server造成額外的負擔。因為它工作在hdfs層級,你僅需指定hdfs的位置(其它集群的hbase.rootdir)即可,如下。

1hbase org.apache.hadoop.hbase.snapshot.exportsnapshot -snapshot

2snapshotname -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 定...