美文网首页hbase
HBase快照及表复制

HBase快照及表复制

作者: 小KKKKKKKK | 来源:发表于2023-01-31 11:40 被阅读0次

HBase没有直接复制表的命令,但是可以通过HBase快照进行复制表的操作。

一、什么是快照

快照是表元数据的不可变集合,以及在拍摄快照时包含表的 HFile 列表。

快照的“克隆”从该快照创建新表,快照的“恢复”将表的内容返回到创建快照时的内容,“克隆”和“恢复”操作不需要复制任何数据,因为底层 HFiles(包含 HBase 表数据的文件)不会被任何操作修改。

同时,将快照导出到另一个集群对本地集群的 RegionServers 几乎没有影响。

二、快照配置

在HBase中需要打开快照的配置,才能进行对快照的操作,配置名为:hbase.snapshot.enabled

<property>
    <name>hbase.snapshot.enabled</name>
    <value>true</value>
</property> 

默认情况下,快照在 0.95+中启用,默认情况下在 0.94.6+时关闭

三、HBase Shell对快照的操作

1.生成快照

snapshot 'sourceTable', 'snapshotName'

默认是在生成快照之前在内存中执行数据刷新,这意味着内存中的数据包含在快照中。也可以不进行内存中数据刷新,生成快照。

snapshot 'sourceTable', 'snapshotName', {SKIP_FLUSH => true}

2.列出快照

列出所有生成的快照

list_snapshots 

3.克隆快照

在快照中,可以创建一个新表,其中包含拍摄快照时的相同数据。

克隆操作不涉及数据副本,对克隆表的更改不会影响快照或原始表。

也就是对HBase复制表的操作。

clone_snapshot 'snapshotName', 'newTableName'

3.恢复快照

还原操作需要禁用表,并且表将恢复到拍摄快照时的状态。

disable 'tableName'
restore_snapshot 'snapshotName' 

4.删除快照

delete_snapshot 'snapshotName'

5.导出快照

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot snapshotName -copy-to hdfs://srv1:8082/hbase -mappers 16 -bandwidth 200

5.1.配置说明

-snapshot 后面跟快照名称
-copy-to 加hdfs的地址,如果需要本集群导出就配置本集群地址,如果要跨集群导出就设置跨集群的地址
-mappers 映射器
-bandwidth 限制导出快照时的带宽消耗(每秒兆字节数的整数)

相关文章

网友评论

    本文标题:HBase快照及表复制

    本文链接:https://www.haomeiwen.com/subject/oaovhdtx.html