跳到主要内容

2 篇博文 含有标签「Snapshot」

查看所有标签

· 阅读需 14 分钟

前言

建议先阅读前文HBase Snapshot基本原理

HBase作为数据库,可以用于线上TP类需求,但如果直接基于HBase表运行AP类的离线分析型任务,则有2个问题:

  • 可能会对线上读写产生影响,造成集群抖动。
  • 速度慢

所以HBase提供了工具,可以直接越过HBase层直接读存储在HDFS上的文件,常用的就是Scan Snapshot功能。好处是:

  • 在某个时间点打snapshot,基于snapshot做查询
  • 直接读HDFS文件,避免与在线请求竞争HBase的计算资源,有效减轻对在线业务的影响。但如果对HDFS的吞吐过高也会有影响,所以也要根据集群规模考虑对IO限流。
  • 速度快。可以基于MR实现,轻松实现弹性。并且因为跳过了HBase这一层,执行速度得到极大提高。

· 阅读需 9 分钟

前言

成熟的数据库都有备份与恢复的功能,在意外或故障时还能尽量恢复数据,同时还能实现数据迁移。接下来就是介绍HBase的备份与恢复功能——Snapshot。

出于学习目的,代码参考社区master分支,最接近的release版本应该是3.0.0-alpha-4,目前肯定是没有公司在线上使用的。也许实现细节上会有些区别,但核心逻辑基本一致。

HBase Snapshot具备以下能力:

  • 数据备份与恢复
  • 利用ExportSnapshot工具实现数据迁移,可以迁移至HDFS或各类主流对象存储
  • 使用MR/Spark直接扫描Snapshot,进行离线分析,避免对实时读写的影响