HBase的快照功能可以获取表的轻量级备份,并且对性能的影响极小。您可以在DataServing集群节点上使用HBase Shell或通过命令行来创建、导入或导出快照,并使用快照克隆新表或恢复表数据。本文为您介绍如何使用HBase快照。

创建快照

使用hbase shell命令连接HBase后,您可以通过以下命令为表table1创建名为table1-snapshot的快照。您还可以为snapshot命令增加SKIP_FLUSHTTLMAX_FILESIZE等参数限制。
snapshot 'table1', 'table1-snapshot'
说明 快照名称必须唯一。您可以通过list_snapshots命令查看当前所有的快照。

通过hbase shell命令连接HBase,详情请参见连接HBase

通过快照克隆新表

您可以通过clone_snapsho命令,基于快照克隆出一个新表,新表拥有和快照相同的数据。

例如,使用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官网