全部產品
Search
文件中心

E-MapReduce:使用HBase快照

更新時間:Nov 07, 2024

HBase的快照功能可以擷取表的輕量級備份,並且對效能的影響極小。您可以在包含HBase服務的叢集上使用HBase Shell或通過命令列來建立、匯入或匯出快照,並使用快照複製新表或恢複表資料。本文為您介紹如何使用HBase快照。

建立快照

使用hbase shell命令串連HBase,詳情請參見串連HBase。然後,您可以通過以下命令為表table1建立名為table1-snapshot的快照。您還可以為snapshot命令增加SKIP_FLUSHTTLMAX_FILESIZE等參數限制。

snapshot 'table1', 'table1-snapshot'
說明

快照名稱必須唯一。您可以通過list_snapshots命令查看當前所有的快照。

通過快照複製新表

您可以通過clone_snapshot命令,基於快照複製出一個新表,新表擁有和快照相同的資料。

例如,使用hbase shell命令串連HBase後,執行以下命令您可以通過快照table1-snapshot複製出新表table2。

clone_snapshot 'table1-snapshot', 'table2'

通過快照恢複表資料

您可以通過restore_snapshot命令,恢複建立該快照時的表資料。使用快照恢複表資料時,必須先禁用表。

例如,使用hbase shell命令串連HBase後,先禁用表table1,通過快照table1-snapshot恢複table1的資料並重新啟用表table1。

disable 'table1'
restore_snapshot 'table1-snapshot'
enable 'table1'

匯入快照

您可以使用命令列方式匯入其他路徑上的HBase快照。匯入快照時您需要指定匯入的快照名稱、匯入快照的源路徑、儲存快照的目的地址以及匯入任務的mapper數量等。

例如,通過以下命令從OSS-HDFS上匯入快照至另一個DataServing叢集的OSS-HDFS中。

hbase snapshot export \
-snapshot 'table1-snapshot' \
-copy-from oss://${OSS-HDFS服務的網域名稱}/oss-dir \
-copy-to oss://${OSS-HDFS服務的網域名稱}/hbase \
-mappers 2

參數

描述

-snapshot

需要匯入的快照名稱。例如,table1-snapshot。

-copy-from

匯入快照的源地址和儲存快照的目的地址。

您可以在OSS管理主控台的概覽頁面,複製OSS-HDFS服務的網域名稱,擷取詳情請參見擷取OSS-HDFS服務網域名稱

-copy-to

-mappers

匯入使用處理常式的個數。例如,設定為2。

重要

如果匯入快照時您沒有指定該參數,HBase會根據表的大小來計算該值,如果數量過大,則會影響HBase正在啟動並執行任務。因此,建議您指定-mappers或者-bandwidth參數的值以限制匯入快照使用的叢集資源。

匯出快照

您可以使用命令列方式將快照匯出至另一個叢集的HDFS或OSS-HDFS上。匯出快照時您需要指定匯出的快照名稱、匯出的路徑以及匯出任務的mapper數量等。

例如,通過以下命令向OSS-HDFS中匯出快照table1-snapshot。如果向另一個叢集的HDFS中匯出快照,則需要將-copy-to參數設定為對應的HDFS路徑。

hbase snapshot export \
-snapshot 'table1-snapshot' \
-copy-to oss://${OSS-HDFS服務的網域名稱}/oss-dir \
-mappers 2

刪除快照

使用hbase shell命令串連HBase後,您可以通過以下命令刪除快照table1-snapshot。

delete_snapshot 'table1-snapshot'

相關文檔

您可以查看Apache HBase Snapshots官方文檔瞭解更多資訊,詳情請參見Apache HBase官網