残雪余香

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  69 随笔 :: 1 文章 :: 57 评论 :: 0 引用

HBase在0.94之后提供了Snapshot功能,一个snapshot其实就是一组metadata信息的集合,它可以让管理员将表恢复到以前的一个状态。snapshot并不是一份拷贝,它只是一个文件名的列表,并不拷贝数据。一个全的snapshot恢复以为着你可以回滚到原来的表schema和创建snapshot之前的数据。在0.95之后默认开启snapshot功能,之前版本的需要手动开启对snapshot的支持,修改hbas-site.xml文件添加

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

主要提供了以下几个操作(目前只是对单个表进行这样的操作):

#take snapshot
hbase> snapshot 'tableName', 'snapshotName'
 
#list snapshots
hbase> list_snapshots 
#delete snapshot
hbase> delete_snapshot 'snapshotName'
 
#clone snapshot
hbase> clone_snapshot 'src_snapshot','dest_snapshot'
 
#restore snapshot, 首先必须将表disable掉
hbase> restore_snapshot 'snapshotName'

 

实践的问题

目前我们线上的集群是hbase-0.94的,开启了snapshot功能,实践了一下,有以下几个问题:

  • 元数据存在不一致状态时,一般的hbase一做split的时候就会出现暂态的元数据不一致
  • 需要做restore的时候它会先对表的当前状态做一下snapshot,成功之后才会去restore,这个有点没必要,有时候我们正是因为元数据不一致才会去做restore,这样就会没办法去做
  • 生成snapshot的时候只能是一张表一张表去做,不知道后面的hbase版本会不会一个操作解决所有表的snapshot
 
后期计划升级hbase,尝试新版本的snapshot会不会更实用可靠一些。
posted on 2015-05-10 14:17  残雪余香  阅读(6370)  评论(0编辑  收藏