Hdfs的快照原理

1.1 快照原理
Hdfs的快照(snapshot)是在某一时间点对指定文件系统拷贝,快照采用只读模式,可以对重要数据进行恢复、防止用户错误性的操作。

快照分两种:一种是建立文件系统的索引,每次更新文件不会真正的改变文件,而是新开辟一个空间用来保存更改的文件,一种是拷贝所有的文件系统。Hdfs属于前者。

Hdfs的快照的特征如下:

  1.  快照的创建是瞬间的,代价为O(1),取决于子节点扫描文件目录的时间。
    
  2.  当且仅当做快照的文件目录下有文件更新时才会占用小部分内存,占用内存的大小为O(M),其中M为更改文件或者目录的数量;
    
  3.  新建快照的时候,Datanode中的block不会被复制,快照中只是记录了文件块的列表和大小信息。
    
  4.  快照不会影响正常的hdfs的操作。对做快照之后的数据进行的更改将会按照时间顺序逆序的记录下来,用户访问的还是当前最新的数据,快照里的内容为快照创建的时间点时文件的内容减去当前文件的内容。
    

每个快照最高限额为65536个文件或者文件夹,在快照的子文件夹中不允许在创建新的快照。

建快照前需要用allowSnapShot命令指定允许做快照的目录:

这个目录下有一个文件:

开始新建快照,取名为clcshot1:

在目录下有一个.snapshot的文件夹,里面有针对该目录的所有快照,每个目录下都存有当前快照的目录:

往一个文件里append数据,更改文件的内容:

文件大小发生了更改:

快照文件夹中还是原始大小,说明hdfs为更改文件开辟了新的空间。

尝试删除创建快照的目录:

删除失败,想要删除该目录,需要将快照都删除。

再创建一个snapshot:

在namenode首页上可以看到整个hdfssnapshot的信息:

比较同一个目录下不同版本快照的区别,用命令snapshotDiff:

1.2 快照数据恢复
清空/tmp/caolch/中的数据,可以用任何一个快照版本进行恢复。

恢复命令就是简单的cp。

首先清空/tmp/caolch下的所有文件。

然后将快照中的数据cp到需要恢复的目录。

注意,mv命令和del命令是不允许的,因为快照是只读的。

Hbase的基于快照的表修复

Hdfs的快照同样适用于hbase表的恢复。

在hbase的数据表目录/hbase/data/default/(default为默认namespace空间)中新建快照,就会在该目录下生成.snapshot的文件夹,里面放着针对该目录的所有快照。

如果存在用户误删hbase表,

将快照中保存的数据表文件夹cp到/hbase/data/default下,然后执行如下命令,修复元数据即可。

注意:cp到/hbase/data/default目录下的数据表文件夹的权限要修改成hbase:hbase

否则修改元数据的命令会失败。

上面是对整个hbase的namespace空间进行的快照备份,如果在某一个表目录下建快照,那么这个表目录就会变成只读,在hbase shell中执行disable+drop 不会将表删除,在建快照之后新增的表数据也不会丢失。

虽然数据不会丢失但是元数据会被drop命令删除,还得用repair命令进行修复。

Hbase的基于快照的表修复相关推荐

  1. 大数据-NoSQL数据库:HBase【基于Zookeeper/HDFS的分布式、高并发、可扩展的NoSQL数据库;支持“十亿行”ד百万列”海量数据的实时随机读写;仅支持单表查询;不擅长数据分析】

    HBase适合场景:单表超千万,上亿,且高并发! HBase不适合场景:主要需求是数据分析,比如做报表.数据量规模不大,对实时性要求高! HBase的查询工具有很多,如:Hive.Tez.Impala ...

  2. HBase运维基础——元数据逆向修复原理

    摘要: 鉴于上次一篇文章--"云HBase小组成功抢救某公司自建HBase集群,挽救30+T数据"的读者反馈,对HBase的逆向工程比较感兴趣,并咨询如何使用相应工具进行运维等等. ...

  3. HBase中的快照技术-原理和实践

    这都是我自己的随笔,有错误请指正. 用法 在hbase shell下执行 创建  snapshot 'tablename','snapshot_name' 删除  delete_snapshot 's ...

  4. 技术实操丨HBase 2.X版本的元数据修复及一种数据迁移方式

    摘要:分享一个HBase集群恢复的方法. 背景 在HBase 1.x中,经常会遇到元数据不一致的情况,这个时候使用HBCK的命令,可以快速修复元数据,让集群恢复正常. 另外HBase数据迁移时,大家经 ...

  5. 将一个基于磁盘的表迁移到SQL Server中的一个内存优化的表

    本文是微软的译文,对应的原文是:https://www.red-gate.com/simple-talk/sql/database-administration/migrating-disk-base ...

  6. 数据仓库主题十-(周期快照事实表)

    综述 当我们在实际工作过程中涉及到一些指标的计算比如账户余额.买卖家星级 商品库存.卖家累积交易额等计算中,则需要聚集与之相关的事务才能进行识别计 :或者聚集事务无法识别 ,比如 温度等.对于这些状态 ...

  7. HBase 2.0.0 META 数据修复工具

    必须先吐槽一下 Cloudera 6.x 和 Hbase 2.0 太坑了! 不久前生产上的一套Hbase集群出现著名的RIT(Regions in Transition)问题. 查看hbase web ...

  8. Hbase 命令:快照操作

    Hbase 命令:快照操作 1.产生快照:    snapshot 'tableName', 'snapshotName' 2.列出所有快照:    list_snapshots     3.删除快照 ...

  9. WINCE基于hive注册表的实现

    ********************************LoongEmbedded******************************** 作者:LoongEmbedded(kandi ...

最新文章

  1. win7下的IP-主机名映射
  2. Meta 开发 AI 语音助手,用于创建虚拟世界和实时翻译
  3. python菜鸟编程-Python3 函数
  4. 汇编:内存地址为什么从0开始?等问题
  5. 【AI2】更新app inventor2离线开发环境AppInventor2021,安卓app图形化开发环境
  6. linux——虚拟机的图形安装、管理以及快照
  7. 给列名称命名_批量提取文件名,然后换上新名称
  8. 初识Mysql(part17)--我需要知道的3条Mysql语句之联结
  9. 开发工作中平常 能用到的 Git 常用命令
  10. Spring使用注解@Transactional事物手动回滚
  11. 使用jdbc执行SQL实现登录查询2-避免SQL注入版
  12. Beta阶段第2周/共2周 Scrum立会报告+燃尽图 10
  13. 云计算之路-阿里云上:2014年6月12日12点IIS请求到达量突降
  14. 机器学习cs229——(一)概要
  15. 南航计算机考研专业课复习重点
  16. vscode中怎样格式化js代码_vscode如何格式化代码
  17. acwing每日一题-战舰
  18. 用 Python 进行多元线性回归分析(附代码)
  19. 区块链ICO新加坡基金会法律意见书有哪些作用?
  20. 基于Domoticz智能家居系统(十七)DIY一款基于MySensors的ESP8266+NRF24L01的MQTT(WIFI)和RF无线网关(三)一个简单MySensors客户端的验证实验

热门文章

  1. 4. Jmeter主界面的介绍
  2. Context与ApplicationContext
  3. Ruby小白入门笔记之Rubymine工具的快捷键
  4. 201809-1—卖菜
  5. Workstation-CentOS-XShell-YUM源 JAVA大数据Week5-DAY1-linux
  6. Apache AB 性能测试
  7. 我插计算机英语,帮我翻译以下计算机英语的句子
  8. 2013中国足球的温柔处罚
  9. LeetCode-185 : sql分组排序再取前几位
  10. oracle中lag()函数和lead()函数的用法(图文)