說明:集群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,后續再看一下