HBase Snapshot

概念

snapshot是元数据信息集合,允许返回到表之前的某个状态。snapshot并不是表的拷贝,它仅仅是一个文件名称的列表 ,并不会复制实际的数据。完整的snapshot恢复意味着回到之前的某个时刻的”表模式”,而在那之后的所有修改将会丢失。

针对snapshot的操作包括:
1 创建snapshot: 在某个固定的表上创建snapshot,如果表的regions正在移动,如在做负载均衡、拆分或合并时,创建可能会失败。
2 克隆snapshot: 根据一个固定的snapshot创建一个新表,新表的数据和snapshot对应的那个时刻的表相同,克隆出的结果是一个完整的新表,对原始的表或snapshot不产生任何影响。
3 恢复snapshot: 根据snapshot将表恢复到之前的某个状态,会丢弃snapshot创建之后的所有修改。
4 删除snapshot: 从系统中删除一个snapshot,释放snapshot指定的那个文件占用的磁盘空间,同时不影响其他的snapshots。
5 导出snapshot: 复制snapshot数据和元数据到其他集群。这个操作只涉及HDFS,因为不需要和Master或Region Server交互,因此HBase可以在down状态。

snapshot与CopyTable/ExportTable主要的区别在于snapshot操作只会写元数据而不涉及任何实际数据操作。
HBase的一个主要设计原则是一旦文件写入将不再被修改。文件不可变意味着snapshot只是用来跟踪当前状态的文件,使得在compaction的时候保证那些文件不会被删除,而是被归档(archived)。

HBase Shell: Snapshot操作

HBase配置文件hbase-site.xml中的hbase.snapshot.enabled属性用来打开/关闭snapshot功能,若希望使用HBase snapshot功能,需要将此配置打开。

对表创建snapshot语法为:

hbase> snapshot 'tableName','snapshotName'

显示所有snapshot列表语法为:

hbase> list_snapshots

上述命令将显示snapshot名称,源表名称,及创建日期。
移除snapshot的语法为:

hbase> delete_snpashot 'snapshotName'

移除一个snapshot不会影响表上面的其他snapshot。
从一个特定的snapshot上创建新表语法为:

hbase> cloen_snapshot 'snapshotName', 'newTableName'

clone_snapshot不会涉及数据复制,因此不会造成同样的数据有两份。
从某个snapshot将表恢复到以前某个时刻语法为:

hbase> restore_snapshot 'snapshotName'

要想把一个已有的snapshot导出到其他集群,使用ExportSnapshot工具,export不会影响RegionServer的负载,它是工作在HDFS级别,export需要指定一个HDFS路径。

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot
SnapshotName -copy-to hdfs:///srv2:8082/hbase
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据源的港湾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值