HBase中的快照技术-原理和实践
这都是我自己的随笔,有错误请指正.
用法
在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中的快照技术-原理和实践相关推荐
- 【java】Java 动态调试技术原理及实践
1.概述 转载:Java 动态调试技术原理及实践 一.动态调试要解决的问题 断点调试是我们最常使用的调试手段,它可以获取到方法执行过程中的变量信息,并可以观察到方法的执行路径.但断点调试会在断点位置停 ...
- Linux 快照 (snapshot) 原理与实践(一) 快照基本原理
文章目录 0. 背景 1. 如何理解快照(snapshot)? 2. 快照 (snapshot) 的原理 2.1 全量快照 1. 克隆 (Clone) 2. 镜像分离 (Split Mirror) 2 ...
- 【Spark】Spark SQL 物化视图技术原理与实践
1.概述 转载:Spark SQL 物化视图技术原理与实践 2.导言 本文将基于 SparkSQL(2.4.4) + Hive (2.3.6), 介绍物化视图在SparkSQL中的实现及应用. 3.什 ...
- Atitit.ide技术原理与实践attilax总结
Atitit.ide技术原理与实践attilax总结 1.1. 语法着色1 1.2. 智能提示1 1.3. 类成员outline..func list1 1.4. 类型推导(type inferenc ...
- 干货:服务器网卡组技术原理与实践
摘要:证券行业为了保障其业务的高可用性,数据中心服务器接入大量采用了服务器网卡(Team)技术.Team技术不完全属于网络系统,也不完全属于主机系统负责,而是介于两者的中间地带,因此极易出现问题.最常 ...
- 解密“达达-京东到家”的订单即时派发技术原理和实践
本文由达达京东到家Java工程师季炳坤原创分享. 1.前言 达达-京东到家作为优秀的即时配送物流平台,实现了多渠道的订单配送,包括外卖平台的餐饮订单.新零售的生鲜订单.知名商户的优质订单等.为了提升平 ...
- Linux 快照 (snapshot) 原理与实践(二) 快照功能实践
文章目录 0. 概要 1. 准备演示数据 2. 创建 snapshot-origin 目标 3. 创建 snapshot 目标 4. 验证 COW 操作 4.1 第一次写数据 4.2 第二次写数据 5 ...
- 百分点认知智能实验室:智能校对的技术原理和实践
编者按 :大数据时代下各种文本信息爆炸,传统的文本分析处理工作逐渐被计算机取代.文本数据量越大,其中所包含的错误的总数也越多,通过校对工作来纠正文本中的错误显得尤其重要.传统的校对主要依赖人工,通过人 ...
- 浅谈导航数据中POI搜索技术原理
浅谈导航数据中POI搜索技术原理之一 王健 导航技术的应用已经成为现在生活中重要组成部分,为我们的生活提供了极大的便利.基本都有这样生活的体验,搜索自己位置附近的银行网点.餐馆.那么这些POI是如何快 ...
最新文章
- 13_文件的操作模式
- android荧光进度条,CSS3 彩色荧光棒进度条
- 笔记:Hadoop权威指南 第4章 Hadoop I/O
- 从2D到3D 开发者讲述“街霸V”的美术秘笈
- consul历史版本下载地址
- Java程序员必经的实践之路:微服务与SOA架构
- ubuntu tftp 端口 NFS端口固定与防火墙
- 协同过滤算法_从网易云日推浅谈个性化推荐系统(1)——基于用户的协同过滤算法...
- raid读写速度对比_组建RAID 0前后的读写速度对比
- 记一次跟二房东公司(非中介个人房源无中介费)租房的经历
- ABAP SPLITTER技术总结及使用技巧
- 实习期间工作、学习、成长、收获总结
- cs python课程 加州大学_如何看待Berkeley开设的CS61A:SICP in Python课程?
- 如何写一个简单的病毒程序
- Vue 学习——表格列表数据显示百分号%、显示数字改为自定义内容、数据表头下拉、点击筛选数据
- 程序员面试之葵花宝典
- C语言入门Part 3—大致梳理(中篇)
- 通信工程交换传输实习报告
- 自然语言处理-哈工大笔记
- python画花瓣飘落_Python——画一棵漂亮的樱花树
热门文章
- Atitit 3种类型的公司:运营驱动型;产品驱动型; 技术驱动型。
- 【译】 Google: Still in The Search 搜索巨人Google的伟大转变 (三)
- 详细总结:分布式, Nginx Linux Redis 微服务 Dubbo框架 Quartz定时任务
- 图像存储策略:Packed与Planar
- python期末考试试卷及答案_python考试试题及答案(1)
- 内网项目中引入NoVnc服务
- 一文学会Spring,Spring最简单的入门教程(万字好文)
- NFC智能锁让ofo化身气质小仙女 华为手机频送秋波要玩个大的
- java计算机毕业设计慧学IT精品课程网站(附源码、数据库)
- 解决iframe跨域问题