HDFS的快照原理和Hbase基于快照的表修复

前一篇文章《HDFS和Hbase误删数据恢复》主要讲了hdfs的回收站机制和Hbase的删除策略。根据hbase的删除策略进行hbase的数据表恢复。本文主要介绍了hdfs的快照原理和根据快照进行的数据恢复。

1.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命令是不允许的,因为快照是只读的。

2.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 <tablename>不会将表删除,在建快照之后新增的表数据也不会丢失。

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

修复完之后,再enable这个表,就ok了。

来源: http://lib.csdn.net/article/hbase/43748

时间: 2024-10-30 07:55:41

HDFS的快照原理和Hbase基于快照的表修复的相关文章

HBase的快照技术

(1)     什么是快照 快照就是一份元信息的合集,允许管理员恢复到表的先前状态,快照不是表的复制而是一个文件名称列表,因而不会复制数据. 完全快照恢复是指恢复到之前的表结构以及当时的数据快照之后发生的数据不会恢复. (2)     快照的作用 Hbase中存在的备份或克隆表的方法就是使用复制/导出表或者在关闭表之后拷贝hdfs中的所有的hfile.复制/导出时通过一些列工具调用mapreduce来扫描并复制表,这样子会对regionserver有直 接的影响,关闭表会停止所有的读写操作,实际

利用HBase的快照功能来修改表名

hbase的快照功能常常被用来做数据的恢复的,但是由于项目的特殊需求需要改hbase表的表名.在官网上通过快照功能来修改hbase表名的用法: 下面展示用shell命令的和Java api两种方式: In versions 0.90.x of hbase and earlier, we had a simple script that would rename the hdfs table directory and then do an edit of the hbase:meta table

mysqldump 和 基于快照的备份

mysqldump 和 基于快照的备份 Table of Contents mysqldump: 仅适用于数据集较小 lvm-snapshot: 基于 LVM 快照的备份 相关阅读 mysqldump: 仅适用于数据集较小 mysqldump DB_NAME [tbname1] [tbname2] # mysqldump -uroot -pYOUR_PASSWORD DB_NAME > test.sql mysql> create database test2; mysqldump -uroo

计算机网络原理和OSI模型与TCP模型

计算机网络原理和OSI模型与TCP模型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.计算机网络的概述 1.计算机网络的定义 计算机网络是一组自治计算机的互连的集合 2.计算机网络的基本功能 a.资源共享 b.分布式处理与负载均衡 c.综合信息服务 3.计算机网络的演进 4.按照地域范围 a>.LAN(Local Area Network) 通常指几千米以内的,可以通过某种介质互联的计算机.打印机.modem或其他设备的集合 MAN(Metropolitan Area N

(转)详解LVS负载均衡之三种工作模型原理和10种调度算法

前言:最近在为我们的产品在做高可用,一边搭环境,一边了解相关知识,搜到这篇博客,质量不错,表述清晰,于是转载过来学习. 标签:详解LVS负载均衡之三种工作模型原理和10种调度算法 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://linuxnx.blog.51cto.com/6676498/1195379 LVS负载均衡原理和算法详解    Internet的快速增长使多媒体网络服务器面对的访问数量快速增加,服务器需要具备提供大

加密、解密原理和openssl自建CA过程详解

一.加密和解密相关知识简介 1.信息安全标准 NIST(National Institute of Standards and Technology)美国国家标准与技术研究院,制定了网络信息安全与保密的三个要素: 保密性(confidentiality):信息不泄露给非授权用户.实体或过程,或供其利用的特性.(一般包括数据保密性.隐私性.) 完整性(Integrity):数据未经授权不能进行改变的特性.即信息在存储或传输过程中保持不被修改.不被破坏和丢失的特性.(一般包括数据完整性.系统完整性.

ARP原理和ARP攻击

ARP--在TCP/IP协议栈中,最不安全的协议莫过于ARP了,我们经常听到的网络扫描,内网渗透,流量欺骗等等,他们基本上都与ARP有关系,甚至可以说,他们的底层都是基于ARP实现的.但是ARP的是实现仅需一问一答的两个包即可,实现上很简单. 一.ARP协议 ARP(Address Resolution Protocol)地址解析协议,目的是实现IP地址到MAC地址的转换. 在计算机间通信的时候,计算机要知道目的计算机是谁(就像我们人交流一样,要知道对方是谁),这中间需要涉及到MAC地址,而MA

KVM(七)使用 libvirt 做 QEMU/KVM 快照和 Nova 实例的快照

本文将梳理 QEMU/KVM 快照相关的知识,以及在 OpenStack Nova 中使用 libvirt 来对 QEMU/KVM 虚机做快照的过程. 1. QEMU/KVM 快照 1.1 概念 QEMU/KVM 快照的定义: 磁盘快照:磁盘的内容(可能是虚机的全部磁盘或者部分磁盘)在某个时间点上被保存,然后可以被恢复. 磁盘数据的保存状态: 在一个运行着的系统上,一个磁盘快照很可能只是崩溃一致的(crash-consistent) 而不是完整一致(clean)的,也是说它所保存的磁盘状态可能相

Mybatis插件原理和PageHelper结合实战分页插件(七)

今天和大家分享下mybatis的一个分页插件PageHelper,在讲解PageHelper之前我们需要先了解下mybatis的插件原理.PageHelper 的官方网站:https://github.com/pagehelper/Mybatis-PageHelper 一.Plugin接口 mybatis定义了一个插件接口org.apache.ibatis.plugin.Interceptor,任何自定义插件都需要实现这个接口PageHelper就实现了改接口 package org.apach