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