HBase的快照技术

时间:2023-03-09 05:50:22
HBase的快照技术

(1)     什么是快照

    快照就是一份元信息的合集,允许管理员恢复到表的先前状态,快照不是表的复制而是一个文件名称列表,因而不会复制数据。

    完全快照恢复是指恢复到之前的表结构以及当时的数据快照之后发生的数据不会恢复。

(2)     快照的作用

    Hbase中存在的备份或克隆表的方法就是使用复制/导出表或者在关闭表之后拷贝hdfs中的所有的hfile。复制/导出时通过一些列工具调用mapreduce来扫描并复制表,这样子会对regionserver有直    接的影响,关闭表会停止所有的读写操作,实际环境中往往无法接受。

    相比之下,hbase的快照允许管理员不拷贝数据直接克隆一张表,这对服务器产生的影响最小。将快照导出至其他集群不会直接影响到任何服务器,导出只是带有一些额外逻辑的群间数据同步。

(3)     快照操作

      a)       生成快照:本操作尝试对指定表生成快照。如果集群在执行数据均衡、分割或合并等操作时,可能会一起操作失败,可以现对该表进行快照操作。

          snapshot  ‘tablename’ , ‘table-snapshot’   -->生成表的快照

          list_snapshots   --à查看所有的快照

      b)       克隆快照:本操作使用与指定快照相同的结构数据构建一张新表。操作结果会生成一张有完整功能的表,对该表的任意修改不会对元彪或者快照产生影响。

          clone_snapshot  ‘table-snapshot’ ,’ new-tablename’  --->克隆快照,并生成一张新表,修改新表不会影响原表

      c)        还原快照:本操作将表结构和数据恢复到生成快照时的状态。

          restore_snapshot ‘snapshot-name’

          说明:snapshot-name是对应表的快照,在还原之前请将原表disable。还原之后再enable原表。

      d)       删除快照:本操作将系统中的快照删除,释放未共享的磁盘空间,而且不会影响其他克隆或者快照。

          delete_snapshot  ‘snapshotname’

      e)       导出快照:本操作将快照数据和元数据复制到其他集群。操作只会涉及hdfs,不会与master或者服务器产生任何联系,因此hbase集群可以关闭。

          Hbase  org.apache.hadoop.hbase.snapshot.ExportSnapshot  -snapshot  snapshotname  -copy-to  hdfs:///server2:8082/hbase

(4)     快照的优势

    导出快照与复制/导出表除了更好保持一致性外,主要的不同在于导出快照是在hdfs的层面操作。这意味着Master和服务器与操作无关。因此不需要为不必要的数据创建缓存空间,也不会有扫描过     程,因为大量对象创建引起的GC暂停。对于hbase来说主要性能影响就是datanode额外的网络和磁盘负载。