HBase--Snapshot(快照)的使用_hbase snapshot-程序员宅基地

技术标签: hadoop  hbase  大数据  

HBase–Snapshot(快照)的使用

1. 基于Hbase snapshot数据快速备份方法

连接到Hbase:

hbase shell

需要开启快照功能,在hbase-site.xml文件中添加如下配置项:

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

(1)创建快照

查看snapshot

list_snapshots

查看help:

hbase(main):009:0> snapshot

ERROR: wrong number of arguments (0 for 2)

Here is some help for this command:
Take a snapshot of specified table. Examples:

  hbase> snapshot 'sourceTable', 'snapshotName'
  hbase> snapshot 'namespace:sourceTable', 'snapshotName', {
    SKIP_FLUSH => true}

创建snapshot,为表 tableName 打一个快照 table_snapshot,快照不涉及数据移动,可以在线完成。

snapshot 'tableName','table_snapshot'

(2)删除快照

删除并查看快照

delete_snapshot 'table_snapshot'

(3)基于快照,clone

基于快照,clone一个新表。根据快照回复出一个新表,回复过程不涉及数据移动,可以在秒级完成。

clone_snapshot 'table_snapshot','new_table'

(4)基于快照回复表(原hbase表tableName需要禁用)

命令如下,恢复指定快照,恢复过程会替代原有数据,将表还原到快照点,快照点之后的搜友更新将会丢失。

需要注意的是原表需要先disable掉,才能执行restore_snaoshot操作。

# 禁用表
disable 'tableName'
# 查看表是否存在
exists 'tableName'
restore_snapshot 'table_snapshot'

(5)基于快照将数据导出到另外一个集群中的本地文件中

利用mapreduce job 将 table_snapshot这个 snapshot 到处到本地目录usr/hdp/2.5.3.0-37/hbase/hbasedata

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot 'table_snapshot' -copy-to file:usr/hdp/2.5.3.0-37/hbase/hbasedata -mappers 16

(6)基于快照将数据导出到另外一个集群中的hdfs上

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot 'table_snapshot' -copy-to hdfs:///hbase/bak_emp_snapshot -mappers 16

使用 ExportSnapshot 命令可以将A集群的快照数据迁移到B集群,ExportSnapshot 是HDFS 层面的擦欧总,会使用MR进行数据的并行迁移,因此需要在开启 MR 的机器上进行迁移。HMaster 和 HRegionServer 并不参议这个过程,因此不会带来额外的内存开销以及GC开销。唯一的影响是 DN 在拷贝数据的时候需要额外的带宽以及IO负载,ExportSnapshot 也针对这个问题设置了参数 -bandwidth 来限制带宽的使用

2. snapshot 基本原理

snapshot机制并不会拷贝数据,可以理解为 它是元数据的一份指针。在HBase这种LSM类型系统结构下是比较容易理解的,我们知道HBase数据文件一旦落到磁盘之后就不再允许更新删除等原地修改操作,如果想更新删除的话可以追加写入新文件(HBase中根本没有更新接口,删除命令也是追加写入)。这种机制下实现某个表的snapshot只需要给当前表的所有文件分别新建一个引用(指针),其他新写入的数据重新创建一个新文件写入即可。如下图所示:

在这里插入图片描述

snapshot 流程主要涉及3个步骤:

  1. 加一把全局锁,此时不允许任何的数据写入更新以及删除
  2. 将 Memstore 中的缓存数据 flush 到文件中(可选)
  3. 为所有HFile文件分别新建引用指针,这些指针元数据就是snapshot

snapshot 使用场景

  1. 增量备份,通常情况下,对重要的业务数据,建议至少每天执行一次snapshot来保存数据的快照记录,并且定期清理过期快照,这样如果业务发生重要错误需要回滚的话是可以回滚到之前的一个快照点的。
  2. 从用户或者应用异常中还原;从一个已知的安全状态回复/还原
  3. 查看之前的快照并有选择性的合并不同写入产品环境
  4. 如果要对集群做重大的升级的话,建议升级前对重要的表执行一次 snapshot,一旦升级有任何异常可以快速回滚到升级前。
  5. 数据迁移,生成快照,导入到其他集群进行操作。因为导出的快照是HDFS级别,所以不会像复制表那样降低HBase主集群的效率。机房在线迁移,通常情况是数据在A机房,因为A机房机位不够或者机架不够需要将整个集群迁移到另一个容量更大的B集群,而且在迁移过程中不能停服。基本迁移思路是先使用snapshot 在B集群恢复出一个全量数据,再使用replication 技术增量复制A集群的更新数据,等待两个集群数据一致之后将客户端请求重定向到B机房。
  6. 应用测试,构建测试环境:通过快照模拟生产环境下结构或应用发生的变化,测试完成即可丢弃
  7. 使用snapshot 将表数据导出到HDFS,再使用Hive\Spark 等进行离线OLAP 分析,比如审计报表、月度报表等
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45866849/article/details/127059452

智能推荐

解决React在安装antd之后出现的Can't resolve './locale'或者浏览器显示Cannot find module './locale’问题的两种方案_react脚手架 can't resolve './const-程序员宅基地

文章浏览阅读1.1w次,点赞4次,收藏3次。React在安装antd之后出现的Can’t resolve './locale’或者浏览器显示Cannot find module './locale’问题,是因为moment的版本有问题,而react默认使用了最新的moment,但是在[email protected]中是没有问题的。1.第一种解决方法解决方案就是配置webpack的alias,将所有的 moment 路径引用导入到 [email protected]操作步骤安装moment 依赖 npm install [email protected]_react脚手架 can't resolve './const

Redis之下载与安装(二)_(二)redis下载和安装-程序员宅基地

文章浏览阅读161次。其实Redis并不正式支持windows版本,官网那个5.0.x稳定版其实是linux版本_(二)redis下载和安装

AD10 PCB文件统一设置字体大小(默认字体大小)_ad10统一修改字符大小-程序员宅基地

文章浏览阅读4.3w次,点赞10次,收藏23次。这个网上给我的提示(http://zhidao.baidu.com/link?url=UNxy0GoaU7jj0QRgCikKIdHIrE7C-FOiojG-5nE6a_QBqXVuYdublOROizQyNRtfNudH53WZQrGj6Dgv_sXcr_):默认值设置:Tools_Preference_PCB Editor_Defaults,选Component点Edit Values.._ad10统一修改字符大小

鼠标光标是黑色方块,切换为竖线的方法_光标变成黑块怎么变回竖线-程序员宅基地

文章浏览阅读2.9w次,点赞39次,收藏36次。编辑时有两种模式:1、光标位置显示为竖线,即通常使用的模式,插入模式2、光标位置显示为方块,即覆盖模式。这2个可以互相切换,切换方法:1、如果目前是插入模式,点击键盘的insert键,则切换成覆盖模式,反之同样。2、笔记本电脑键盘没有insert键时可以用软键盘点击insert键进行切换(软键盘打开方式:win+R,输入osk回车),或者接一个有Insert的键盘点击 insert 就好..._光标变成黑块怎么变回竖线

生态速递丨微擎系统已支持一键部署至云托管-程序员宅基地

文章浏览阅读385次。微信云托管是微信团队和腾讯云联合提供的以云原生为基础的,免运维、高可用服务上云解决方案,无需服务器,1分钟即可部署小程序/公众号服务端。微擎是一家中小企业云端商业及营销解决方案提供商,主要从事网络技术研发及零售科技服务。现有认证开发者超30000名,服务规模超50万家。为降低用户使用门槛,方便用户更加方便快捷地上云,微擎已支持通过“云安装”功能,将代码托管至微信云托管,无需单独购买服务器和域名,即可实现一键部署,简化操作,非常适合初创、中小企业以及研发人力有限的团队。操作指引几步完成配置一、在微擎

RBF神经网络参考模型自适应MATLAB实现(分析)_rbf自适应控制-程序员宅基地

文章浏览阅读2.4w次,点赞28次,收藏209次。由于BP神经网络的收敛速度慢,不适合安在自适应系统里,所以选择了速度比较快的RBF神经网络,看了关于RBF神经网络自适应控制的一些原理和MATLAB代码,有一些自己的理解写在这里。一般的神经网络的作用是去做一些分类,回归等工作,能够根据系统输入,在训练好的神经网络系统下分类或者预测出系统的输出,我主要的工作不是做分类器,这个方法主要运用在机器视觉上,我的研究生主要工作是逼近一个未知模型,这就需要..._rbf自适应控制

随便推点

javax.net.ssl.SSLException: Received fatal alert: internal_error 解决-程序员宅基地

文章浏览阅读1w次,点赞2次,收藏2次。javax.net.ssl.SSLException: Received fatal alert: internal_error_javax.net.ssl.sslexception: received fatal alert: internal_error

Oracle & 神通数据库 清空所有表数据操作_神通数据库清除数据的脚本-程序员宅基地

文章浏览阅读1.3k次,点赞2次,收藏2次。1、拼接处truncate所有表的语句select 'truncate table '||table_name||';' from user_tables;2、Ctrl+A全选,粘贴至命令行,执行Over._神通数据库清除数据的脚本

切图常说的@1X@2X@3X是什么意思?_web1x 2x-程序员宅基地

文章浏览阅读1w次。苹果IOS程序开发不同分辨率的设备统一为一个尺寸而标记的。@3X就是@1X分辨率的3倍。如图,iPad2 是768 x 1024,iPad Retina 是1536 x 2048,开发时都按 768 * 1024 操作。但实际上两者有一倍差异。为了达到最佳效果,使用的图片大小不一样。这时候就用同一个名称,但 Retina 的图加上 @2x 后缀。系统加载图片时,在 iPad2 上会加载 @_web1x 2x

element-ui el-input / el-select输入框的非空校验_vue2对el-select和el-input如何判断是否为空-程序员宅基地

文章浏览阅读1.7w次,点赞4次,收藏8次。一、之前写的实现直接js判断就可以.prevent .stop 是阻止继续冒泡 不一样的见 官方说明 1https://cn.vuejs.org/v2/cookbook/form-validation.html#%E4%BD%BF%E7%94%A8%E8%87%AA%E5%AE%9A%E4%B9%89%E6%A0%A1%E9%AA%8C2 自定义 (我没看)https://..._vue2对el-select和el-input如何判断是否为空

QMessageBox 中的 OK 按钮改为中文“确定”_qmessagebox按钮ok显示中文-程序员宅基地

文章浏览阅读1.2w次。有很多资料用于将 QMessageBox 的 OK 改为中文。但大多很麻烦。本文提供一个简便方法,用于定制 QMessageBox 的按钮,包括将其翻译成中文显示。QMessageBox 对其内部的 Button 进行维护,用户可以使用 addButton() 方法,以及 removeButton() 方法添加或者移除按钮。每个 Button 都有个角色属性(enum QMessag_qmessagebox按钮ok显示中文

linux读取ntfs硬盘很慢,在Ubuntu上NTFS写入速度确实很慢(<15MB/s)-程序员宅基地

文章浏览阅读5.4k次。问题描述当复制大文件或使用dd测试写入速度时,使用NTFS文件系统在驱动器上可以得到的最大写入速度约为12-15MB /s。我测试了多个驱动器(全部使用SATA连接),这些驱动器在Windows上或使用ext4格式化时的写入速度均为100MB /s +,因此这不是对齐或驱动器问题。top显示mount.ntfs进程的CPU使用率很高。AMD双核处理器(2.2 GHz)内核版本:3.5.0-23-g..._ubuntu ntfs 速度慢

推荐文章

热门文章

相关标签