这都是我自己的随笔,有错误请指正.

用法

在hbase shell下执行

创建  snapshot 'tablename','snapshot_name'

删除  delete_snapshot 'snapshot_name'

克隆  clone_snapshot 'snapshot_name','new_tablename'

列出  list_snapshots

替换  restore_snapshot 'snapshot_name'     原表还原到快照(大概

导出(linux的shell下,没用过)

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot snapshot_name -copy-to hdfs:///ip:端口/hbase

有啥用-------------英文版

  • 从用户/应用程序错误中恢复
  • 从已知的安全状态恢复/恢复。
  • 查看以前的快照并有选择地将差异合并到生产中。
  • 在主要应用程序升级或更改之前保存快照。
  • 在特定时间审核和/或报告数据视图
  • 捕获每月数据以实现合规性。
  • 运行结束日/月/季度报告。
  • 应用测试
  • 测试模式或应用程序对快照中生成的数据类似的更改,然后将其丢弃。例如:拍摄快照,从快照内容(架构和数据)创建新表,并通过更改架构,添加和删除行等来操作新表。(原始表,快照和新表保持相互独立。)
  • 卸货工作
  • 拍摄快照,将其导出到另一个群集,然后运行MapReduce作业。由于导出快照在HDFS级别运行,因此您不会像CopyTable那样减慢主HBase群集的速度。

可能的问题

创建:在平衡,拆分(split)或合并(compaction)期间,可能失败.同一时间之内给一张表快照(A表快照中不能给A快照)

克隆:克隆得到的新表和原表可以说是两种表,互不影响,但是克隆表占用的空间很小(相比较原表)

删除:好像没遇到啥问题

导出+替换:(TODO)

官方的话

HBase 从0.95开始引入了Snapshot,可以对table进行Snapshot,也可以Restore到Snapshot。Snapshot可以在线做,也可以离线做。Snapshot的实现不涉及到table实际数据的拷贝,仅仅拷贝一些元数据,比如组成table的region info,表的descriptor,还有表对应的HFile的文件的引用。

存储原理

所以先直接看下文件夹结构,hdfs上的hbase

版本不同可能文件结构不同(应该也差不了太大)

/hbase 里面有以下三个

/.snapshot

n+1个文件夹1个 /.tmp 和n个 /snapshot_name .tmp中的文件是快照过程中生成的,最后是没有的

/archive       引用文件,表描述什么的

引用文件是本地的之外,其它文件则基本上是 export 时,来自其它集群的真实数据文件,这也是Snapshot 相关操作中唯一涉及到真实数据文件拷贝的操作。

/data            放物理表

再后面就要看看源码了,

参考地址-------看起来很美---------这个才是详细

1) Snapshot 具体是什么?它所包含文件的具体信息是什么?

Answer:Snapshot 其实是一系列文件的组合,这些文件中重要的有.snapshotinfo、.tableinfo.[xxxxxxxxxx] 、.regioninfo、 data.manifest,他们包含了对 table、region、store file 等的具体描述元信息,通过对 Snapshot 里的文件做相应的解析,可以还原备份前的 table、region、family 等信息,同时能够找到存储有实际数据信息的 store file 文件,而由于 HBase 在删除文件时,并不会真正的删除文件,而是将文件转移到 archive 目录,所以 Snapshot 始终能保证在任何时候都能还原数据。

2) Take、Clone、Restore、Delete、Export 操作的具体实现原理。

Answer:究其根本,这一系列操作其实就是对 table 以及其下面的所有数据做一个备份与还原等操作,而 Take、Clone、Restore、Delete 操作本身并不涉及到 store file 文件本身的操作,Export 因为涉及到跨集群,所以需要将数据拷贝到其它集群,而由于 HBase 基于 Hadoop 之上,文件系统基于 HDFS,而 Hadoop 实现了跨集群拷贝文件,以及其它譬如集群间通信等方法,这让 Snapshot 的这一系列操作实现变得不那么太关注底层的实现,所以相对而言其实现原理是相对容易理解的。

3) 目录能改变吗?

Answer:不能!即便是 Export 操作,也只能指定其它集群的 HBase 目录位置,不能改变其内在结构。

从程序代码上讲,Snapshot 相关操作的涉及到的内部目录名称都是使用类里面的常量保存,比如

HConstants.HFILE_ARCHIVE_DIRECTORY = "archive"、HConstants.SNAPSHOT_DIR_NAME = ".hbase-snapshot" 等,所以除了改变源码,否则是没办法改变其内部目录结构的。当然,改源码使其目录结构改变是及其不理智的。

其实在做 Snapshot 分析的主要原因之一在于希望能解释 Export 为什么会将数据发送到 archive 目录,而不是直接放在 data 目录下,就这个问题来分析一下为什么不能通过改源码来改变其目录结构。

在 data 目录下的 store file 都是正在使用的,Export 只是传输过来,还没确定是否要使用啊。另外如果改成其它名称,那也没必要啊。

快照源码解释------清晰+详细

总的来说

快照就是一个表结构的备份,然后可以快速还原到快照时的状态,比copy什么的备份快的多

然后原理实际上就是根据hbase的文件结构来的,快照克隆出来的表很小是因为他是链接到原表的,然后原表删除快照依然有用,

因为删除表,archive目录还是有数据,能多久就看hbase啥时候去自动删了.

所以快照也就做一个容灾的备份

HBase中的快照技术-原理和实践相关推荐

  1. 【java】Java 动态调试技术原理及实践

    1.概述 转载:Java 动态调试技术原理及实践 一.动态调试要解决的问题 断点调试是我们最常使用的调试手段,它可以获取到方法执行过程中的变量信息,并可以观察到方法的执行路径.但断点调试会在断点位置停 ...

  2. Linux 快照 (snapshot) 原理与实践(一) 快照基本原理

    文章目录 0. 背景 1. 如何理解快照(snapshot)? 2. 快照 (snapshot) 的原理 2.1 全量快照 1. 克隆 (Clone) 2. 镜像分离 (Split Mirror) 2 ...

  3. 【Spark】Spark SQL 物化视图技术原理与实践

    1.概述 转载:Spark SQL 物化视图技术原理与实践 2.导言 本文将基于 SparkSQL(2.4.4) + Hive (2.3.6), 介绍物化视图在SparkSQL中的实现及应用. 3.什 ...

  4. Atitit.ide技术原理与实践attilax总结

    Atitit.ide技术原理与实践attilax总结 1.1. 语法着色1 1.2. 智能提示1 1.3. 类成员outline..func list1 1.4. 类型推导(type inferenc ...

  5. 干货:服务器网卡组技术原理与实践

    摘要:证券行业为了保障其业务的高可用性,数据中心服务器接入大量采用了服务器网卡(Team)技术.Team技术不完全属于网络系统,也不完全属于主机系统负责,而是介于两者的中间地带,因此极易出现问题.最常 ...

  6. 解密“达达-京东到家”的订单即时派发技术原理和实践

    本文由达达京东到家Java工程师季炳坤原创分享. 1.前言 达达-京东到家作为优秀的即时配送物流平台,实现了多渠道的订单配送,包括外卖平台的餐饮订单.新零售的生鲜订单.知名商户的优质订单等.为了提升平 ...

  7. Linux 快照 (snapshot) 原理与实践(二) 快照功能实践

    文章目录 0. 概要 1. 准备演示数据 2. 创建 snapshot-origin 目标 3. 创建 snapshot 目标 4. 验证 COW 操作 4.1 第一次写数据 4.2 第二次写数据 5 ...

  8. 百分点认知智能实验室:智能校对的技术原理和实践

    编者按 :大数据时代下各种文本信息爆炸,传统的文本分析处理工作逐渐被计算机取代.文本数据量越大,其中所包含的错误的总数也越多,通过校对工作来纠正文本中的错误显得尤其重要.传统的校对主要依赖人工,通过人 ...

  9. 浅谈导航数据中POI搜索技术原理

    浅谈导航数据中POI搜索技术原理之一 王健 导航技术的应用已经成为现在生活中重要组成部分,为我们的生活提供了极大的便利.基本都有这样生活的体验,搜索自己位置附近的银行网点.餐馆.那么这些POI是如何快 ...

最新文章

  1. 13_文件的操作模式
  2. android荧光进度条,CSS3 彩色荧光棒进度条
  3. 笔记:Hadoop权威指南 第4章 Hadoop I/O
  4. 从2D到3D 开发者讲述“街霸V”的美术秘笈
  5. consul历史版本下载地址
  6. Java程序员必经的实践之路:微服务与SOA架构
  7. ubuntu tftp 端口 NFS端口固定与防火墙
  8. 协同过滤算法_从网易云日推浅谈个性化推荐系统(1)——基于用户的协同过滤算法...
  9. raid读写速度对比_组建RAID 0前后的读写速度对比
  10. 记一次跟二房东公司(非中介个人房源无中介费)租房的经历
  11. ABAP SPLITTER技术总结及使用技巧
  12. 实习期间工作、学习、成长、收获总结
  13. cs python课程 加州大学_如何看待Berkeley开设的CS61A:SICP in Python课程?
  14. 如何写一个简单的病毒程序
  15. Vue 学习——表格列表数据显示百分号%、显示数字改为自定义内容、数据表头下拉、点击筛选数据
  16. 程序员面试之葵花宝典
  17. C语言入门Part 3—大致梳理(中篇)
  18. 通信工程交换传输实习报告
  19. 自然语言处理-哈工大笔记
  20. python画花瓣飘落_Python——画一棵漂亮的樱花树

热门文章

  1. Atitit 3种类型的公司:运营驱动型;产品驱动型; 技术驱动型。
  2. 【译】 Google: Still in The Search 搜索巨人Google的伟大转变 (三)
  3. 详细总结:分布式, Nginx Linux Redis 微服务 Dubbo框架 Quartz定时任务
  4. 图像存储策略:Packed与Planar
  5. python期末考试试卷及答案_python考试试题及答案(1)
  6. 内网项目中引入NoVnc服务
  7. 一文学会Spring,Spring最简单的入门教程(万字好文)
  8. NFC智能锁让ofo化身气质小仙女 华为手机频送秋波要玩个大的
  9. java计算机毕业设计慧学IT精品课程网站(附源码、数据库)
  10. 解决iframe跨域问题