HBase 主主replication

本文只做原理描述,未经过线上业务长时间验证

写操作:
HBase双活策略,写操作实现有两种方式:
1.用户业务端双写,同一份数据写两个集群
优点:不用关心底层异常等问题

缺点:需要启动两个写HBase的任务

2.通过HBase replication机制实现,双向replication功能测试是通过的
优点:只需要启动一套写HBase的任务,如果有一部分数据写了A集群,另外一部分写了B集群,两边也可以自动同步

缺点:底层有异常可能需要补数(之前线上有单向replication的应用,没有应用过双向replication),最好离线有日志当有异常时可以补数据。

因为HBase replication是同步实时写的操作,所以不支持bulkload的数据同步

读操作:
客户端目前不支持自动切换,例如查询服务需要从A集群切换到B集群的话,需要重启查询服务。或者用户自己实现两个集群的连接切换的封装。

目前HBase表双活只支持实时写入的数据

大致原理:数据写到源集群表中,同时会写源集群的WAL日志(WAL日志用来做故障恢复和双活),如果配置了peer和replication,源集群的Regionserver服务中会有逻辑读取WAL日志的信息,将WAL日志信息写到从集群同名表中

这里写图片描述

实时写入数据的HBase表双活配置:

扫描二维码关注公众号,回复: 8843964 查看本文章

下面操作在两个集群都需要做,这样才能让两边数据同步。

1.源集群增加目标集群peer配置:
在源集群增加目标集群对应的peer(第一个参数:自定义的集群peerId,比如永顺存储集群peerId我定义为1。第二个参数:目标集群zk以及端口和znode root节点:
hbase.zookeeper.quorum:hbase.zookeeper.property.clientPort:zookeeper.znode.parent)

add_peer '1',CLUSTER_KEY=> "目标集群zookeeper地址,多个用英文逗号分隔:2181:/hbase"

2.源集群执行,对应表对应cf,增加replication配置

alter 'replication_source_table',{NAME=>'对应的CF01', REPLICATION_SCOPE=>'1'},{NAME=>'对应的CF02', REPLICATION_SCOPE=>'1'}

执行完这个alter之后,测试一下,往源集群写入的数据会自动往目标集群同名的表中写入

发布了52 篇原创文章 · 获赞 4 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/Gloria_y/article/details/80805698
今日推荐