首页 / HBASE / HBase在线数据备份
HBase在线数据备份
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了HBase在线数据备份,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3581字,纯文字阅读大概需要6分钟。
内容图文
简述
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_tableCFs
,show_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
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/scgaliguodong123_/article/details/46757875
内容总结
以上是互联网集市为您收集整理的HBase在线数据备份全部内容,希望文章能够帮你解决HBase在线数据备份所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。