hbase表集群间数据同步 hbase replication

说明:集群A中有张表t1,现在想让往t1中写入数据后,集群B中的t1表,也会有这些数据,两个集群中的t1表,名字和结构一样;

 

操作案例:

【Hbase表集群间同步】
源集群要更改hbase配置:hbase.replication => true

目标集群hbase配置不动;

并且hbase的WAL日志要打开,因为replication 功能是依靠WAL来完成的;

 

修改表的配置,执行如下hbase命令:

disable 'tableName'
alter 'tableName', CONFIGURATION => {'hbase.region.store.parallel.put.limit.min.column.count' => 200, 'hbase.region.store.parallel.put.limit' => 100}
enable 'tableName'

这里将hbase.region.store.parallel.put.limit.min.column.count参数,线程处理的最小列数由默认100改为200,

将hbase.region.store.parallel.put.limit参数,单region处理的并发数由默认10改为100

通过上面对hbase表配置修改,我们的集群能够达到单表2000条/秒的put速度,每个put有134列,已经能够满足我们实时同步的需求。

 

 

(1)源集群,同步user_1表到172.20.146.50集群
hbase> create 'user_1', 'info'       #表如果已经存在,就不用创建了
hbase> add_peer '12','172.20.146.50:2181:/hbase'            
hbase> alter 'user_1',{NAME =>'info', REPLICATION_SCOPE=>'1'}
hbase> set_peer_tableCFs '12','user_1'
hbase> list_peers

注意:172.20.146.50:2181:/hbase 为目的hbase集群所使用的zookeeper地址,多个zk可写为: zk1,zk2,zk3:2181:/hbase
           HDP集群最后不是/hbase ,而是/hbase-secure 具体的可以看hbase的配置 zookeeper.znode.parent
           add_peer和set_peer_tableCFs中的'12' 对应唯一id,每一张表的 add_peer id可随意添加但是要唯一。


(2)目的集群:
在目的hbase节点上创建表与源hbase 的表结构一致
hbase> create 'user_1', 'info'

在源集群表中添加数据,看目的集群表中是否已经同步了;


(3)暂停 HBase 集群复制:
hbase> disable_table_replication "t1"

(4)删除复制:
hbase> remove_peer 'id'       #谨慎操作,最好不要删掉,因为目前发现,删掉peer后,源集群hbase会挂掉,我这版本是CDH5.13.1,后续再看一下

 

posted @ 2022-01-13 15:34  米兰的小铁將  阅读(1093)  评论(0编辑  收藏  举报