HBase的快照功能可以擷取表的輕量級備份,並且對效能的影響極小。您可以在包含HBase服務的叢集上使用HBase Shell或通過命令列來建立、匯入或匯出快照,並使用快照複製新表或恢複表資料。本文為您介紹如何使用HBase快照。
建立快照
使用hbase shell命令串連HBase,詳情請參見串連HBase。然後,您可以通過以下命令為表table1建立名為table1-snapshot的快照。您還可以為snapshot命令增加SKIP_FLUSH、TTL或MAX_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參數 | 描述 |
| 需要匯入的快照名稱。例如,table1-snapshot。 |
| 匯入快照的源地址和儲存快照的目的地址。 您可以在OSS管理主控台的概覽頁面,複製OSS-HDFS服務的網域名稱,擷取詳情請參見擷取OSS-HDFS服務網域名稱。 |
| |
| 匯入使用處理常式的個數。例如,設定為2。 重要 如果匯入快照時您沒有指定該參數,HBase會根據表的大小來計算該值,如果數量過大,則會影響HBase正在啟動並執行任務。因此,建議您指定 |
匯出快照
您可以使用命令列方式將快照匯出至另一個叢集的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官網。