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官網。