Apache HBase 快照(Snapshots) 介绍

本文将介绍 HBase 快照功能,因为 HBase 的底层存储是基于 HDFS 的,所以 HBase 的快照功能也是依赖 HDFS 快照的知识。HBase 快照功能是从 HBase 0.95.0 开始引入的。

HBase 快照功能允许管理员在不复制数据的情况下克隆一张表,同时对 RegionServers 影响很小。HBase snapshots 的使用场景主要包括以下几种情况:

  • 对重要表定期进行快照操作,这样可以在出现问题时将影响减小到最少;
  • 在重大应用升级或改变之前保存一个快照,这样如果应用升级或改变发生问题,可以快速回滚到操作之前的状态。
  • 将数据迁移到其他集群,我们可以创建一个 snapshot,然后使用 ExportSnapshot 工具迁移到另外一个集群,并在另外一个集群进行恢复,这样可以做一些离线分析或数据备份功能等;
  • 构建测试环境数据。

一、什么是Snapshot

对 HDFS 上的文件进行快照时,其实是快照文件记录 block 的列表和文件大小,并不做数据的拷贝。HBase 底层用的也是 HDFS 的快照功能,所以对 HBase 表进行快照也不会发生数据的备份。HBase 快照其实是一系列的 metadata 信息组合,利用这些信息,管理员可以将一个表恢复到之前的状态,任何在创建快照之后插入的数据都会丢失。

二、快照操作

和 HDFS 快照一样,HBase 快照也支持一系列的操作。主要有以下几种。

  • 创建快照:这个操作尝试在给定表上创建快照。如果表中的 Region 由于发生 balance、split 或 merge 而产生移动的时候可能会导致创建快照失败。
  • 克隆快照:这个操作将会使用特定快照中的相同模式(schema)和相同数据来创建一张新表,这个操作执行之后会创建一个全新的表,对这个表进行的任何操作将不会对原表挥着快照有任何影响。
  • 恢复快照:这个操作将表的模式和数据还原到快照状态。注意,所有在创建快照之后的修改将会丢失。
  • 删除快照:这个操作将从系统中删除快照。释放未共享的磁盘空间, 而且不会影响其他克隆或快照。
  • 导出快照:这个操作将快照的数据和元数据拷贝到其他集群。这个操作只用到了 HDFS,并不会和 Master 或 RegionServer 发生通讯,所以我们可以直接把 HBase 集群关闭。

三、快照使用

在进行下面操作之前,确保你集群 hbase.snapshot.enabled 参数设置为 true。为了方便下面的操作,我们先创建一张 HBase 表,并往里面插入几条测试数据,如下:

[Shell] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

hbase(main):010:0> create 'iteblog_table', 'cf'

Took 0.1013 seconds

hbase(main):010:0> put 'iteblog_table','1', 'cf:name','wyp'

Took 0.2110 seconds

hbase(main):012:0> put 'iteblog_table','2', 'cf:name','iteblog'

Took 0.0083 seconds

hbase(main):013:0> put 'iteblog_table','3', 'cf:name','iteblog_hadoop'

Took 0.0066 seconds

hbase(main):014:0> scan 'iteblog_table'

ROW              COLUMN+CELL

 1               column=cf:name, timestamp=1547646979906, value=wyp

 2               column=cf:name, timestamp=1547646995691, value=iteblog

 3               column=cf:name, timestamp=1547647005389, value=iteblog_hadoop

3 row(s)

Took 0.0346 seconds

我们创建了名为 iteblog_table 的表,并插入了几条数据。

1、创建快照

创建快照可以使用 snapshot 命令,具体如下:

[Shell] 纯文本查看 复制代码

?

1

2

hbase(main):016:0> snapshot 'iteblog_table', 'snap_iteblog_table'

Took 1.4361 seconds

2、显示快照

使用 list_snapshots 命令可以显示系统里面的所有快照, 具体如下:

[Shell] 纯文本查看 复制代码

?

1

2

3

4

5

6

hbase(main):017:0> list_snapshots

SNAPSHOT                                            TABLE + CREATION TIME

 snap_iteblog_table                                 iteblog_table (2019-01-16 21:57:31 +0800)

1 row(s)

Took 0.0245 seconds

=> ["snap_iteblog_table"]

3、克隆快照

正如前面说的,这个操作会使用快照里面的信息创造一个全新的表,我们对这个新表的操作不会影响旧的表。

[Shell] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

hbase(main):018:0> clone_snapshot 'snap_iteblog_table', 'iteblog_table_v1'

Took 2.4177 seconds

hbase(main):019:0> scan 'iteblog_table_v1'

ROW                    COLUMN+CELL

 1                     column=cf:name, timestamp=1547646979906, value=wyp

 2                     column=cf:name, timestamp=1547646995691, value=iteblog

 3                     column=cf:name, timestamp=1547647005389, value=iteblog_hadoop

3 row(s)

Took 0.0784 seconds

hbase(main):020:0> put 'iteblog_table_v1','4', 'cf:name','iteblog.com'

Took 0.0121 seconds

hbase(main):021:0> scan 'iteblog_table_v1'

ROW                    COLUMN+CELL

 1                     column=cf:name, timestamp=1547646979906, value=wyp

 2                     column=cf:name, timestamp=1547646995691, value=iteblog

 3                     column=cf:name, timestamp=1547647005389, value=iteblog_hadoop

 4                     column=cf:name, timestamp=1547647268467, value=iteblog.com

4 row(s)

Took 0.0395 seconds

hbase(main):022:0> scan 'iteblog_table'

ROW                    COLUMN+CELL

 1                     column=cf:name, timestamp=1547646979906, value=wyp

 2                     column=cf:name, timestamp=1547646995691, value=iteblog

 3                     column=cf:name, timestamp=1547647005389, value=iteblog_hadoop

3 row(s)

Took 0.0698 seconds

4、恢复快照

快照的一个目的就是可以用来恢复数据,我们现在来演示如何通过快照还原备份的数据。假设我们误删除了 RowKey 为 1 的数据,这时候我们可以通过使用 restore_snapshot 来恢复快照。

[Shell] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

hbase(main):023:0> delete 'iteblog_table','1','cf:name'

Took 0.0431 seconds

hbase(main):024:0> scan 'iteblog_table'

ROW                    COLUMN+CELL

 2                     column=cf:name, timestamp=1547646995691, value=iteblog

 3                     column=cf:name, timestamp=1547647005389, value=iteblog_hadoop

2 row(s)

Took 0.0371 seconds

hbase(main):026:0> disable 'iteblog_table'

Took 1.7439 seconds

hbase(main):028:0> restore_snapshot 'snap_iteblog_table'

Took 2.5920 seconds

hbase(main):029:0> enable 'iteblog_table'

Took 1.2940 seconds

hbase(main):030:0> scan 'iteblog_table'

ROW                    COLUMN+CELL

 1                     column=cf:name, timestamp=1547646979906, value=wyp

 2                     column=cf:name, timestamp=1547646995691, value=iteblog

 3                     column=cf:name, timestamp=1547647005389, value=iteblog_hadoop

3 row(s)

Took 0.0272 seconds

当然,我们也可以使用快照来分析 HBase 里面的数据,这个后面会再起一篇文章进行介绍,敬请期待。

转载自过往记忆(https://www.iteblog.com/)

Apache HBase 快照(Snapshots) 介绍相关推荐

  1. Apache HBase快照介绍

    转自 http://www.importnew.com/4966.html CDH是Cloudera的完全开源分布式Apache Hadoop及相关项目(包括Apache HBase).CDH的当前版 ...

  2. 2021年大数据HBase(八):Apache Phoenix的基本介绍

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 前言 系列历史文章 Apache Phoenix的基本介绍 Apache ...

  3. 【翻译】Apache Hbase新特性--MOB支持(一)

    2019独角兽企业重金招聘Python工程师标准>>> 原文链接:http://blog.cloudera.com/blog/2015/06/inside-apache-hbases ...

  4. apache karaf_Apache Karaf遇到Apache HBase

    apache karaf 介绍 Apache HBase是一个以Google Bigtable为蓝本的开源,分布式,版本化,面向列的商店. 如果您是普通读者,那么您可能已经知道Apache Karaf ...

  5. Apache Karaf遇到Apache HBase

    介绍 Apache HBase是模仿Google Bigtable的开源,分布式,版本化,面向列的商店. 如果您是普通读者,那么您可能已经知道Apache Karaf是什么,但是对于那些不是的读者:A ...

  6. HBase MOB特性介绍

    前言 又是一个周末,学习脚步不歇,今天给大家推荐的是关于HBase  MOB特性的介绍,希望能帮助大家,之前作者有翻译过这篇文章,有社区同学提出文章有些地方翻译不当,小编重新进行了二次翻译与推敲,若有 ...

  7. Apache HBase【从无到有从有到无】【AH8】RegionServer调整大小的经验法则

    目录 RegionServer调整大小的经验法则 1.关于列族的数量 1.1.ColumnFamilies的基数 2.Rowkey设计 2.1.热点发现(Hotspotting) 2.2.单调增加行键 ...

  8. Apache HBase MTTR 优化实践:减少恢复时长

    摘要:HBase是Hadoop Database的简称,是建立在Hadoop文件系统之上的分布式面向列的数据库,它具有高可靠.高性能.面向列和可伸缩的特性,提供快速随机访问海量数据能力. 本文分享自华 ...

  9. cassandra 之 快照(snapshots)与sstableloader 备份、恢复、脚本

    一.cassandra的备份和恢复 cassandra的备份恢复主要是通过snapshots 来实现. 步骤: 备份阶段: 1. 生成快照: 恢复阶段: 1. 清空表的数据(truncate tabl ...

最新文章

  1. LeetCode Add Binary
  2. MYSQL绿色安装过程
  3. DPDK 实现的不完全笔记
  4. php mpm,Ubuntu Apache 切换到php-fpm+mpm_event模式
  5. 中国量子技术产出居世界第二 英国量子技术未来5个发展方向
  6. 谷歌搜索、谷歌学术、Github的镜像网站
  7. 斑凶鹰来袭,斑鸠逃生
  8. Sqoop 是什么?Sqoop 有什么特点?
  9. 实现简单计算器 两个数字的加减乘除计算
  10. dava靶场远程命令执行
  11. Excel如何间隔插入空白列
  12. Flutter调试ios中的报错——Xcode更新
  13. 2010年下半年 系统集成项目管理工程师 下午试卷
  14. 【215】第K个大的数,K相关题目-分治、堆应用
  15. java程序设计任务驱动式教程_java程序设计任务驱动式教程保持良好的交流答案...
  16. 我的架构梦:(五十四) 分库分表实战及中间件之Mycat实战
  17. UMDF的第一个win10驱动:驱动程序开发环境完善(三)
  18. springboot——任务处理
  19. 内置对象(转,侵立删)
  20. 如何解决win10系统安装MATLAB点击steup.exe闪退或没法安装?

热门文章

  1. 电动车控制器电路原理图讲解分析
  2. 雷达图文字被遮住的解决办法
  3. Jon Skeet's C# and .NET articles and links
  4. 基于ssm+mysql+jsp销售医药管理系统
  5. 【MLA首日报告摘要】周志华、马毅等教授分享机器学习最新进展
  6. 实时数仓项目架构分层
  7. 我的世界服务器防止右键无限钓鱼,我的世界:1.7.10挪威海怪事件详解,在海边钓鱼,却被鱿鱼杀死!...
  8. 基于AD Event日志识别黄金票据攻击
  9. ios终端ssh远程连接mysql_iOS终端ssh连接服务器
  10. 淘宝官方商品、交易、订单、物流接口参数说明