Apache HBase快照介绍
转自 http://www.importnew.com/4966.html
CDH是Cloudera的完全开源分布式Apache Hadoop及相关项目(包括Apache HBase)。CDH的当前版本(4.2)引入的一个HBase新特性最近加入到了主干中,允许用户对指定表进行快照。
在CDH4.2之前,唯一能够备份或克隆表的方法就是使用复制/导出表或者在关闭表之后拷贝HDFS中所有的hfile。复制/导出是通过一系列工具调用MapReduce来扫描并复制表,这样会对域服务器的效率有直接的影响。关闭表会停止所有的读写操作,实际环境中往往无法接受。
相比之下HBase快照允许管理员不拷贝数据直接克隆一张表,这对域服务器产生的影响最小。将快照导出至其他集群不会直接影响到任何域服务器;导出只是带有一些额外逻辑的群间数据同步。
下面是一些HBase快照的使用场景:
- 从用户/应用异常中还原
- 从一个已知的安全状态恢复/还原
- 查看之前的快照并有选择性的合并不同写入产品环境
- 当主应用程序升级或改版时保存快照。
- 在指定时间审查和/或报告数据。
- 按照规定捕获月度数据
- 生成日终/月末/季末报告
- 应用测试
- 通过快照模拟生产环境下结构或应用发生的变化,测试完成即可丢弃。例如:生成快照,利用快照中内容构建新表(原有结构+数据)并且修改新表的结构,添加或删除列之类。(原始表、快照和新表保持相互独立)
- 减少工作压力
- 生成快照,导入到其他集群,然后运行MapReduce jobs。因为导出的快照是HDFS级别,所以不会像复制表那样降低HBase主集群的效率。
快照是什么?
快照就是一份元信息的合集,允许管理员恢复到表的先前状态。快照不是表的复制而是一个文件名称列表,因而不会复制数据。完全快照恢复是指恢复到之前的“表结构”以及当时的数据,快照之后发生的数据不会恢复。
操作
- 生成快照:本操作尝试对指定表生成快照。如果集群在执行数据均衡、分隔或合并等操作时,可能会引起操作失败。
- 克隆快照:本操作使用与指定快照相同的结构数据构建一张新表。操作结果会生成一张有完整功能的表,对该表的任意修改不会对原表或快照产生影响。
- 还原快照:本操作将表结构和数据恢复到生成快照时的状态。(注意:本操作会舍弃快照生成后任何改变)。
- 删除快照:本操作将系统中的快照删除,释放未共享的磁盘空间,而且不会影响其他克隆或快照。
- 导出快照:本操作将快照数据和元数据复制到其他集群。操作只会涉及HDFS,不会与Master或域服务器产生任何联系,因此HBase集群可以关闭。
零复制快照,恢复,克隆
快照和复制/导出表之间的主要差异是快照操作只写入元数据,不涉及海量数据。
HBase的主要设计原则之一就是一旦文件写入就不再修改。文件不可变意味着快照只需保持对快照产生时存在的文件追踪,并且在压缩时负责提示系统该文件不应删除而是应当归档保存。
同样的原则也适用于克隆和恢复操作。因为文件是不变的,新建一个表只需要通过快照“链接”到文件引用即可。
导出快照是唯一需要复制数据的操作,因为其他集群没有数据文件。
导出快照 vs 复制/导出表
导出快照与复制/导出表除了更好地保持一致性外,主要的不同在于导出快照是在HDFS的层面操作的。这意味这Master和域服务器与操作无关。因此不需要为不必要的数据创建缓存空间,也不会有扫描过程因为大量对象创建引起的GC暂停。对于HBase来说主要性能影响就是DataNode额外的网络和磁盘负载。
HBase命令:快照操作
通过检查hbase-site.xml中的hbase.snapshot.enabled是否设置为true确认打开了快照许可。获取指定表的快照使用snapshot命令(不产生文件复制)
1
|
hbase> snapshot ‘tableName’, ‘snapshotName’
|
列出所有的快照,使用 list_snapshot 命令。会展示出快照名称,源表,以及创建日期和时间
1
2
3
|
hbase> list_snapshots
SNAPSHOT TABLE + CREATION TIME
TestSnapshot TestTable (Mon Feb 25 21:13:49 +0000 2013)
|
删除快照使用 deleted_snapshot 命令。删除快照不会影响到克隆表或者之后生成的快照。
1
|
hbase> delete_snapshot ‘snapshotName’
|
使用clone_snapshot命令从指定的快照生成新表(克隆)。由于不会产生数据复制,所以最终用到的数据不会是之前的两倍。
1
|
hbase> clone_snapshot ‘snapshotName’, ‘newTableName’
|
使用restore_snapshot命令将指定快照内容替换当前表结构/数据。
1
|
hbase> restore_snapshot ‘snapshotName’
|
使用ExportSnapshot工具将现有快照导出至其他集群。导出工具不会影响到域服务器负载,只是工作在HDFS层面所以需要指定HDFS路径(其他集群的hbase根目录)
1
2
3
|
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot
SnapshotName -copy-to hdfs:///srv2:8082/hbase
|
目前的限制
快照需要依赖一些条件,目前有一些工具还没有很好的整合新特性:
- 合并引用快照的集群会引起快照和克隆表的数据丢失。
- 当复制开启时还原一个表,会造成两个集群不同步。表不会在复制集上还原。
结论
当前快照包含了所有的基础功能特性,但是还是有很多工作要做,包括监测、页面UI集成、磁盘空间优化等等。
了解更多如何使用HBase和快照,请参考文档。
原文链接: Cloudera 翻译: ImportNew.com - 陈 晨
译文链接: http://www.importnew.com/4966.html
[ 转载请保留原文出处、译者和译文链接。 ]
Apache HBase快照介绍相关推荐
- Apache HBase 快照(Snapshots) 介绍
Apache HBase 快照(Snapshots) 介绍 本文将介绍 HBase 快照功能,因为 HBase 的底层存储是基于 HDFS 的,所以 HBase 的快照功能也是依赖 HDFS 快照的知 ...
- Welcome to Apache HBase 介绍一
官网:http://hbase.apache.org/ 一:HBase的介绍 HBase认识 Hadoop database, a distributed, scalable, big data st ...
- 【翻译】Apache Hbase新特性--MOB支持(一)
2019独角兽企业重金招聘Python工程师标准>>> 原文链接:http://blog.cloudera.com/blog/2015/06/inside-apache-hbases ...
- HBase—基础介绍
原文作者:Java3 原文地址:我终于看懂了HBase,太不容易了... 目录 摘要: 前言 一.介绍HBase 二.为什么要用HBase 三.入门HBase 3.1 HBase的数据模型 3.2 H ...
- apache karaf_Apache Karaf遇到Apache HBase
apache karaf 介绍 Apache HBase是一个以Google Bigtable为蓝本的开源,分布式,版本化,面向列的商店. 如果您是普通读者,那么您可能已经知道Apache Karaf ...
- Apache Karaf遇到Apache HBase
介绍 Apache HBase是模仿Google Bigtable的开源,分布式,版本化,面向列的商店. 如果您是普通读者,那么您可能已经知道Apache Karaf是什么,但是对于那些不是的读者:A ...
- 【zookeeper】Apache curator优点介绍
文章目录 1. 简介 2. 项目组件 2.1 版本 2.2 项目组件 2.3 Maven依赖 3. 案例及功能说明 3.1 创建会话 3.1.1 重试策略 3.1.2 创建节点 3.1.3 删除节点 ...
- Apache HBase【从无到有从有到无】【AH8】RegionServer调整大小的经验法则
目录 RegionServer调整大小的经验法则 1.关于列族的数量 1.1.ColumnFamilies的基数 2.Rowkey设计 2.1.热点发现(Hotspotting) 2.2.单调增加行键 ...
- Apache HBase MTTR 优化实践:减少恢复时长
摘要:HBase是Hadoop Database的简称,是建立在Hadoop文件系统之上的分布式面向列的数据库,它具有高可靠.高性能.面向列和可伸缩的特性,提供快速随机访问海量数据能力. 本文分享自华 ...
最新文章
- 聚类热图怎么按自己的意愿调整分支的顺序?
- 如何在浏览器端爬取信息(只是配置的部分)----设置环境
- Android 沙箱开源,Android Sandbox(沙箱)开源工具介绍
- 全国计算机等级考试题库二级C操作题100套(第89套)
- 每天扫扫扫,二维码会被我们扫完吗?
- java处理高并发高负载类网站问题
- 【专栏必读】王道考研408数据结构万字笔记(有了它不需要你再做笔记了):各章节内容概述导航和思维导图
- android camera2 qcom,lineage编译环境里,编译QCamera2的技术总结
- JavaScript中的shift()、unshift()和pop()函数
- 开课吧课堂:深入了解学习C++的意义与就业方向
- credential for git
- java writedouble_java-将double转换为32位表示形式(以及相反的...
- matlab幻方变换_Matlab入门1-幻方矩阵
- excel 文件过大 瘦身
- 【精华帖】PS拼接图片最简单教程
- python学习笔记1-环境安装
- ubuntu18.04鼠标正常使用,而键盘失灵
- guess在Java中用法_猜一猜,guess有哪些用法?
- Go实现随机、轮训、权重、哈希负载均衡
- 4rx4 服务器内存2rx4_【P00930-B21 P06190-001 64GB 2Rx4 PC4-2933Y-R 服务器内存】价格_厂家 - 中国供应商...