APP下载

应用Hbase快照机制

2018-03-03

网络安全和信息化 2018年5期
关键词:整张快照命令

在Hbase中快照实际上就是一份元信息的合集,在对表进行快照时,并不会涉及到表中实际数据的拷贝,而是仅仅拷贝关于该表的一些元数据信息。

例如组成表Region info,Descriptor描述信息以及与其对应的HFile文件的引用等内容。

在Hbase中不仅可以对表进行快照操作,还可以利用快照将表恢复到之前的状态,快照可以在线或者离线操作。

注意:Hbase中的快照是基于文件系统级别进行的。

实际上,利用Hbase的快照操作可以对表进行备份。在Hbase中对于表的备份包括表复制,导入导出表或者先将表关闭之后使用Distcp分布式拷贝来复制HDFS中关于表的Hfile文件等。

对于前两种方式,实际上调用了MapReduce来扫描整张表的数据,然后将表复制出去。因为表数据是存放在RegionServer中的,所以需要RegionServer发生大量的I/O操作。将整张表的数据备份出去。

对于后一种方法,会将表关闭来停止所有的读写操作,在实际的生产环境中很难实现。

相比之下,在Hbase使用快照机制优势就很明显了,在使用快照过程中,管理员不需要拷贝整张表的数据,而直接克隆表的元数据信息,因为不涉及大量的I/O操作,这对Regionerver产生的影响最小。

另外,也可以将快照导出到其他Hbase集群,导出操作只是带有一些额外的集群间的逻辑数据的同步而已。

使用快照完成表的备份,是在HDFS层面进行的,意味着HMaster和域服务器与操作无关,就无需为不必要的数据创建缓存空间,不会涉及对整张表的扫描。

使用常规的表备份方式,因为会创建大量的对象而引起GC暂停,这会对Hbase的性能造成影响,例如DataNode数据节点会产生额外的网络和磁盘负载等。

对于快照来说,离线方式指的是将表Disbale掉,由Hbase Master来遍历HDFS中的表的元数据和Hfile,从而建立引用关系。

在线方式就是在表正常访问的情况下,其过程类似于Prepare和Commit两阶段的提交。

HMaster收到创建快照命令后,会作为Coordinator协调者从Hbase的Meta表中取出目标表的Region和对应的RregionServer信息,这些RegionServer就作为第二阶段提交的Participant参与者,Prepare准备阶段会将表的Region信息做快照,并存储到HDFS的临时目录,在Commit提交阶段会将HMaster把临时目录改成正确的目录。在创建快照的过程中,HMaster和Region server都是通过Zookeeper进行数据共享的。

这里使用了Hbase集群,其中包含三个节点。在执行Hbase快照前,需要在主节点上进入Hbase的“conf”目 录。 执 行“vi hbasesite.xml”命令,在其配置文件中找到“”行,将其下的一行修改为“”,来启动Hbase的快照功能。

同理,在其他两个节点上分别打开上述配置文件,在其中添加“hbase.snapshot.e n a b l e d”,“”,“”行。

然后,分别在以上节点的Hbase的“bin”目录下执行“./stop-hbase.sh” 和“./start-hbase.sh”命令,来重启Hbase使上述配置生效。

在主节点上执行“./hbase shell”命令,在控制台中执行“list”命令,查看数据库中存在的表信息。例如执行“scan ' product'”命令,查看“product”表的内容。

执 行“s n a p s h o t'product',' productsnapsh ot'” 命 令,针 对 该 表创建快照,快照名为“productsnapshot”。

在Linux命令行下进入Hadoop的“bin”目录,执行“./hdfs dfs -ls /hbase/.hbase-snapshot”命令,查看快照文件存储信息。

在其中打开名为“productsnapshot”的目录,在其中包含“.snapshotinfo”和“data.manifest”两个文件,存储上述快照的元数据信息。

在Hbase控制台下执行“list_snapshots”命令,可以查看快照信息,包括快照的名称,源表以及创建的日期和时间等。

利用快照可以创建一张新的表,可以实现表的克隆操作,新表中的数据和创建快照时的表数据相同。针对克隆表的修改操作,不会影响快照以及原始表。

在Hbase控 制 台下 执 行“clone_snap'p r o d u c t s n a p s h o t''klproduct'”命令,可以克隆出名为“klproduct”的新表。

利用快照可以将表恢复到快照创建时的状态。

注意:在恢复时需要先将将表Disable掉。

例如执行“disable product”,“r e s t o r e_s n a p s h o t'productsnapshot'”,“enable 'product'”命令,可以将表恢复到之前的状态。

执 行“delete_snapshot'productsnapshot'”命令,可以删除指定的快照。

在Hbase集群环境中,可以将某集群中的Hbase快照导出到另外的集群中。

为此可以先在Linux中进入Hbase的“bin”目录,执 行“hbase class org.apache.hadoop.hbase.s n a p s h o t.t o o l.ExportSnapshot-snapshot productsnapshot-copy-to hdfs:///hostname:9000/hbase-mappers 16”命令,可以将名为“productsnapshot”的快照复制到名为“hostname”的集群中。

猜你喜欢

整张快照命令
戳中皇帝的笑穴
面向Linux 非逻辑卷块设备的快照系统①
EMC存储快照功能分析
只听主人的命令
比萨切块
移防命令下达后
一种基于Linux 标准分区的快照方法
AB卷
这是人民的命令
让时间停止 保留网页游戏进度