HBase在线数据备份

简述

hbase-0.90.0的一个重要改进是引入了replication机制,使它的数据完整性得到了进一步的保障。

hbase的replication机制很像mysql statement-based replication。它是通过WALEdit和HLog来实现的。当请求发送给master cluster时,HLog日志放入hdfs的同时进入replication队列,由slave cluster通过zookeeper获取并写入slave的表中。目前的版本仅支持一个slave cluster 。

HBase Replication

HBase复制是一种在不同HBase部署中复制数据的方法。它可以作为一种故障恢复的方法,并提供HBase层次的高可用性。

HBase复制中最基本的架构模式是”主推送”(master一push),因为每个region server都有自己的WAL(或HLog),所以很容易保存现在正在复制的位置。正如众所周知的解决方案–Mysql的主/从复制,只使用二进制文件来跟踪修改。一个主集群可以将数据复制到任意数目的从集群,每个region server都会参与复制自己的修改。

来自每个regoin server的HLog是HBase复制的基础,并且只要它们需要将数据复制到从集群,它们就必须被保存到HDFS上。每个region server从它需要的最老的日志开始复制,同时在zookeeper中保存当前恢复的位置来简化错误恢复。每个从集群恢复的位置可能不同,但它们处理的HLog队列内容是相同的。

参与复制的集群的规模可以不对等。主集群会通过随机分配尽量均衡从集群的负载。

解决问题:

数据管理人员的失误,不可逆的DDL操作。

底层HDFS文件BLOCK块corruption。

短时间过度的读数据对集群造成的压力,增加服务器应对这种情况比较浪费资源。

系统升级,维护,诊断问题会造成集群不可用时间增长。

双写的原子性难以保证。

不可预计的一些原因。(如机房断电,大规模硬件损坏,断网等)

离线应用的MR计算对在线读写造成的较大的延迟影响。

在线备份方案比较

对于数据中心的数据冗余的备份方案,目前从一致性,事务性,延迟,吞吐量,数据损失,Failover几个角度来分析有以下几种方案。

简单备份模式

通过定时不定时的Dump出集群数据,保证数据的安全性,通常可以通过snapshot或设置时间戳来dump数据来实现这种方案。

如果方案简介,设计优雅,可以做到对在线数据中心低干扰或无千扰的数据备份。

这种方案缺点也是显而易见的,只是对时间点之前的数据安全性得到保障,如果发生突发事件会导致不可避免的整段时间的数据丢失,为很多人无法接受。

主从模式(Master-Slave)

这种模式比起简单的备份模式多了很多优点,可以通过最终一致性保证数据的一致,数据从主集群到备集群延时较低,异步写入不会对主集群带来性能压力,基本不会产生多少性能的影响,突发事件来临时数据丢失很少,并且主集群的事务在备集群也可以得以保证。

一般通过构造较好的Log系统加上check Point来实现,可以实现读写分离,主集群可以担当读写服务,但备集群一般只承担读服务。

主主模式(Master-Master)

原理总体类似于主从模式,不同的是2个集群可以互相承担写的分离,都可承担读写服务。吞吐量有所欠缺。

2阶段提交

这种方案保证了强一致性和事务,服务器返回给客户端成功,则表明数据一定已经成功备份,不会造成任何数据丢失。每台服务器都可承担读写服务。

缺点是造成集群延迟较高,总体吞吐下降。

Paxos算法

基于paxos算法实现的强一致性方案,同一客户端连接的server能保证数据的一致性。

缺点是实现复杂,集群延迟和吞吐随着集群服务器增加而变差。

主从模式 Replication工作流程

部署步骤

1、首先 要构建两套hbase集群。

2、编辑主集群中所有机器的${HBASE_HOME}/conf/hbase-site.xml

增加如下配置:

<property>
<name>hbase.replication</name>
<value>true</value>
</property>

修改完成后,重启HBase主集群,使配置生效。

3、在HBase shell中运行如下命令:

hbase(main):001:0>add_peer ‘ID‘ ‘CLUSTER_KEY‘
hbase(main):002:0>start_replication

第一条命令是为从集群设置zookeeper集群信息,这样可以使得修改被同步到从集群上。

第二条命令真正将修改过的记录发布到从集群上。为了保证工作能按照预期进行,用户必须保证已经在从集群上建立了一个相同的表的副本,表可以为空,但必须有相同的模式和表名。

注意:

hbase-0.96和hbase-0.98已经没有了start_replication命令和

stop_replication命令。hbase-0.98相较hbase-0.96,新增了set_peer_tableCFsshow_peer_tableCFs命令。在设定复制时,hbase-0.98需要使用set_peer_tableCFs设置。具体的有对应的帮助命令可供参考。

ID必须是一个短整数,CLUSTER_KEY的内容请参考以下模板:

hbase.zookeeper.quorum:hbase.zookeeper.property.clientPort:zookeeper.znode.parent

比如,zk.server.com:2180:/hbase

注意:如果两个集群使用相同的zookeepe集群,你不得不使用不同的

zookeeper.znode.parent,因为它们不能写入相同的文件夹中。

4、一旦你有一个对等(从)集群,你需要在你的列簇上使复制可用,要想达到这样的效果,可以在HBase shell中执行如下命令:

hbase(main):005:0>disable ‘your_table‘
hbase(main):006:0>alter ‘your_table‘,{NAME=>‘family_name‘,
REPLICATION_SCOPE=>‘1‘}
hbase(main):007:0>enable ‘your_table‘

scope值为0(默认值),意味着它不会被复制,而scope值为1意味着它将被复制。

5、运行如下命令可以列出所有配置的对等(从)集群:

hbase(main):008:0>list_peers

6、运行如下命令将使对等(从)集群不可用:

hbase(main):009:0>disable_peers ‘ID‘

运行完命令后,HBase将停止将向对等(从)集群发送修改,但是它将一直跟踪所有新的WALs文件,以便当从集群可用时继续复制。

7、可以运行如下命令,将使之前设置为不可用的对等(从)集群可用:

hbase(main):010:0>enable_peer ‘ID‘

8、运行下面的命令,可以移除一个从集群:

hbase(main):011:0>stop_replication
hbase(main):012:0>remove_peer ‘ID‘

需要注意的是,停止复制仍会完成所有已在队列里的修改的复制,但是之后所有的处理都被停止了。为了确认你的配置都正常工作,你可以查看任何一个region server的日志文件,看是否有类似下面几行的内容:

Considering 1 rs,with ratio 0.1
Getting 1 rs from peer cluster # 0
Choosing peer 10.10.1.49:62020

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-27 23:27:33

HBase在线数据备份的相关文章

基于HBase的手机数据备份系统

洞穴逃生 描述: 精灵王子爱好冒险,在一次探险历程中,他进入了一个神秘的山洞.在洞穴深处,精灵王子不小心触动了洞穴内暗藏的机关,整个洞穴将很快塌陷,精灵王子必须尽快逃离洞穴.精灵王子的跑步速度为17m/s,以这样的速度可能是无法逃出洞穴的.庆幸的是精灵王子拥有闪烁法术,可在1s内移动60m,不过每次使用闪烁法术都会消耗魔法值10点.精灵王子的魔法值恢复的速度为4点/s,只有处在原地休息状态时才能恢复. 现在已知精灵王子的魔法初值M,他所在洞穴中的位置与洞穴出口之间的距离S,距离洞穴塌陷的时间T.

记一次测试环境Hbase数据备份恢复以及恢复后部分表无法删除的问题处理

一.Hbase数据备份恢复 说明: 因为测试环境要修改hadoop配置文件hdfs-site.xml的参数hdfs.rootdir 修改前的配置 <property> <name>hbase.rootdir</name> <value>hdfs://masters/hbase1</value> </property> 修改后的配置 <property> <name>hbase.rootdir</name&

HBase 数据备份

HBase提供了备份API,直接使用shell脚本可以叫它.如下面的命令的详细信息: hbase org.apache.hadoop.hbase.mapreduce.Export 'user' /hbase_backup_set/20141110/user hbase org.apache.hadoop.hbase.mapreduce.Import 'user' /hbase_backup_set/20141110/user "user"为备份的HBase对于的数据库名称,"

HBase中的备份和故障恢复方法

在这篇文章中,你将会对在HBase中可用的数据备份机制有一个高层次的简要了解,并且知道多种数据恢复/容灾机制.在阅读了这篇文章之后,你应该能对你的业务需要那种BDR策略有了自己的判断.你也应该明白各种机制各自的优缺点(适用于CDH 4.3.0/HBase 0.94.6及更高版本). 备份 HBase是一个基于LSM树(log-structured merge-tree)的分布式数据存储系统,它使用复杂的内部机制确保数据准确性.一致性.多版本等.因此,你如何获取数十个region server在H

网络数据备份系统结构的几种类型分析

目前最常见的网络数据备份系统结构按其架构不同可以分为四种:基于网络附加存储(DAS-Base)结构,基于局域网(LAN-Base)结构,基于 SAN 结构的 LAN-Free 和Server-Free结构. 网络数据备份系统结构之DAS-Base 结构 基于网络附加存储系统的网络数据备份系统结构是最简单的一种数据保护方案,在大多数情况下,这种备份大多是采用服务器上自带的磁带机或备份硬盘,而备份操作往往也是通过手工操作的方式进行的.如图1所示,红色虚线表示数据流,下同.它适合下面的应用环境: 图1

阿里云云中沙箱自助实验-从Gitlab数据库被删看数据备份的重要性!

云中沙箱实验"RDS的数据备份和恢复",教您如何使用阿里云RDS来备份和恢复您的数据库! 一.基本概念 阿里云关系型数据库(Relational Database Service,简称 RDS)是一种稳定可靠.可弹性伸缩的在线数据库服务.基于阿里云分布式文件系统和高性能存储,RDS 支持 MySQL.SQL Server.PostgreSQL 和 PPAS(Postgre Plus Advanced Server,一种高度兼容 Oracle 的数据库)引擎,并且提供了容灾.备份.恢复.

mysql数据备份及恢复

mysql数据备份: 1数据备份方式: 方式分类: 物理备份:     直接拷贝库或对应的文件,文件的所有者/组必须是mysql cp -r /var/lib/mysql 目录/备份文件名 cp /var/lib/mysql/user.*  /mydata/ tar -zcvf  /mydata/mysal.tar.gz /var/lib/mysql/mysql/* 只支持myisam储存引擎的表       mysqlhotcopy  -u root -p 123456 数据库名   目录/备

Linux -- 服务器数据备份恢复策略

一.Linux 备份恢复基础 1.什么是备份 最简单的讲,备份数据的过程就是拷贝重要的数据到其他的介质之上(通常是可移动的),以保证在原始数据丢失的情况下可以恢复数据.一次备份可能是简单的 cp命令,将一个文件复制到其他目录下,也可能是使用特定的程序将数据流写进一个特定的设备中的复杂过程.很多情况下是将要备份的数据写入到磁带机中,但有些情况也不是这样的.在Linux环境下,或其他Unix系统,备份可以是将文件拷贝到已存在的文件系统,可替换的文件系统,磁带机,远程文件系统,甚至是远程系统的上的磁带

HBase 实战(1)--HBase的数据导入方式

前言: 作为Hadoop生态系统中重要的一员, HBase作为分布式列式存储, 在线实时处理的特性, 备受瞩目, 将来能在很多应用场景, 取代传统关系型数据库的江湖地位. 本篇博文重点讲解HBase的数据导入, 描述三种方式, Client API, Bulkload, 以及Hive Over HBase. *). Client API实现借助HBase的Client API来导入, 是最简易学的方式. Configuration config = HBaseConfiguration.crea