HBase 增量備份

來源:互聯網
上載者:User

文中可能涉及到的API:

Hadoop/HDFS:http://hadoop.apache.org/common/docs/current/api/

HBase: http://hbase.apache.org/apidocs/index.html?overview-summary.html

Begin!

一、概述

使用了HBase提供的Export與Import工具。

Export:http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/Export.html

Import:http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/Import.html

看到這兩個類所在目錄我們瞭解到,Export與Import的實質是MapReduce任務。

關於這兩個工具API中寫的很清楚:

Export an HBase table. Writes content to sequence files up in HDFS. Use Import to read it back in again.

將HBase的表匯出為HDFS的sequence files。

Export如其名,只是匯出工具,如何完成備份功能呢?

 

二、功能實驗

測試過程涉及很多資料,這裡僅提供重要結論:

1、Export是以表為單位匯出資料的,若想完成整庫的備份需要執行n遍。

2、Export在shell中的調用方式類似如下格式:

./hbase org.apache.hadoop.hbase.mapreduce.Export 表名 備份路徑 (版本號碼) (起始時間戳記) (結束時間戳記)

Export [-D <property = value>]* <tableName> <outputDir> [<versions> [<startTime> [<endTime>]]]

括弧內為可選項,例如

./hbase org.apache.hadoop.hbase.mapreduce.Export 'contentTbl' /home/codeevoship/contentBackup20120920 1 123456789

備份contentTbl這張表到/home/codeevoship/contentBackup20120920目錄下(最後一級目錄必須由Export自己建立),版本號碼為1,備份記錄從123456789這個時間戳記開始到目前時間內所有的執行過put操作的記錄。

注意:為什麼是所有put操作記錄?因為在備份時是掃描所有表中所有時間戳記大於等於123456789這個值的記錄並匯出。如果是delete操作,則表中這條記錄已經刪除,掃描時也無法擷取這條記錄資訊。

3、當不指定時間戳記時,備份的就是當前完整表中的資料。

 

三、實施細節

1、如何在增量備份時體現出對資料的刪除操作?

由於Export按時間戳記備份只能反映出Put過的表項,若我在一個備份(增量包)時間區間內刪除了某條已有記錄,當資料庫回檔時,這條被刪除的記錄又會出現在我的表中。

因此,我將所有的刪除操作替換為Put操作:

a、給每行資料添加了一個無效標誌位,在刪除記錄時使用Put給該標誌位寫為1。

b、在單條查詢時,根據rowKey取出記錄後會根據這個標誌位判斷這條記錄是否已被“刪除”,以此決定是否返回這條記錄。在多條查詢時(scan),使用列值過濾器,過濾出所有這個標誌位不為1的記錄。(可參見我之前的《HBase 條件查詢》  )

2、在備份過程中新增的資料是否會影響備份內容的準確性?

可以指定小於等於當前時刻的結束時間戳記,以便將需要備份的資料範圍明確。

 

3、如何備份到其他機器?

a、Export支援提供地址的備份。最簡單的方法,直接把遠端儲存掛載到本地,然後使用本地路徑。

b、使用API調用時,Path如果使用file:///home/codeevoship/backup,代表使用本地檔案系統。若直接寫為/home/codeevoship 代表使用HDFS層的路徑。在使用Shell調用時則相反。

4、如何使用API調用?

通過MapReduce的Job:http://hadoop.apache.org/docs/r0.20.2/api/org/apache/hadoop/mapreduce/Job.html

先通過Export類提供的方法建立Job執行個體,再調用Job的submit()或waitForCompletion(boolean verbose);非同步與同步。

 

四、其他解決方案

1、HDFS層的HDFS Replication或DistCp

2、Cluster Replication

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.