Hbase跨集群数据同步验证

 

环境信息

集群

主机名称

IP地址

HDFS

HBASE

zookeeper

kerberos

A集群

demo1.xiaoke.com

192.168.98.37

namenode
journalnode
datanode

hmster
regionserver

zookeeper server

 
demo2.xiaoke.com

192.168.98.38

namenode
journalnode
datanode

hmster
regionserver

zookeeper server

 

demo3.xiaoke.com

192.168.98.39

journalnode
datanode

regionserver

zookeeper server

 

B集群

test1.xiaoke.com

192.168.98.48

namenode
journalnode
datanode

hmster
regionserver

zookeeper server

 

test2.xiaoke.com

192.168.98.47

namenode
journalnode
datanode

hmster
regionserver

zookeeper server

 

test3.xiaoke.com

192.168.98.46

journalnode
datanode

regionserver

zookeeper server

 

 

同步配置

A集群与B集群均开启replication功能

Hbase跨集群数据同步验证_第1张图片

A集群增加对应的peer

add_peer '11',' test1.xiaoke.com, test2.xiaoke.com, test3.xiaoke.com:2181:/hbase-unsecure'

(11表示peer_id,若未加kerberos等安全认证,需要去ambari上查询zookeeper.znode.parent)

注意:启用了kerberos认证后zk地址一定要使用域名的方式
ps:
remove_peer '11'  #
删除peer(删除后,需要重新add + set)
add_peer '11','
test1.xiaoke.com, test2.xiaoke.com, test3.xiaoke.com:2181:/hbase-unsecure'
set_peer_tableCFs '11','student'
show_peer_tableCFs
list_peers

disable_peer '11'

enable_peer '11'

Hbase跨集群数据同步验证_第2张图片

 

A集群与B集群创建一样的表student

create 'student', 'score', {SPLITS => ['2','3', '4','5','6', '7','8', '9']}

功能验证

准备批量插入数据脚本,一共200条记录

 

put 'student', '1', 'score:number', '1'

….

put 'student', '200', 'score:number', '200'

hbase跨集群主从同步功能及数据完整性验证

A集群修改表属性

disable 'student'

alter 'student', {NAME => 'score',REPLICATION_SCOPE => '1'}

enable 'student'

 

Hbase跨集群数据同步验证_第3张图片

配置表同步

set_peer_tableCFs '11','student'

(多张表的话以逗号分隔,如set_peer_tableCFs '11','student,student1')

 

客户端执行往A集群插入数据

put 'student', '1', 'score:number', '1'

….

put 'student', '200', 'score:number', '200'

 

A集群状态

 

Hbase跨集群数据同步验证_第4张图片

B集群状态

 

Hbase跨集群数据同步验证_第5张图片

批量插入数据脚本执行完成后,在A集群执行:

hbase org.apache.hadoop.hbase.mapreduce.replication.VerifyReplication 11 student

对比数据,如下图

 

 

Hbase跨集群数据同步验证_第6张图片Hbase跨集群数据同步验证_第7张图片

结果显示,GOODROWS为200,说明AB集群同步后数据一致。

(1)当主机群同步验证停止后(disable_peer)
 

Hbase跨集群数据同步验证_第8张图片
向A集群插入新数据,

Hbase跨集群数据同步验证_第9张图片

 

查看B集群,无增量数据同步过来

Hbase跨集群数据同步验证_第10张图片

 

在A集群enable_peer后,

查看B集群数据,数据同步了过来,但时间在10秒左右

Hbase跨集群数据同步验证_第11张图片

 

(2)当主机群移除同步验证后(remove_peer)

 

 

插入数据

 

Hbase跨集群数据同步验证_第12张图片

B集群无数据同步过来

 

Hbase跨集群数据同步验证_第13张图片

重新添加同步验证

重新添加,设置后,一秒后,增量添加到从集群了。

 

Hbase跨集群数据同步验证_第14张图片

 

(3)删除主机群上的zk里的replication的节点目录
ps: hbase复制的状态都存储在zookeeper中,默认情况下存储到 /hbase/replication,这个目录有三个子节点: peers znode、rs znode和state。peer 节点管理slave集群在zk上的配置;state节点记录replication运行的状态;rs 节点记录着本集群rs中对应的hlog同步的信息,包括check point信息。(如果人为的删除 /hbase/replication 节点,会造成复制丢失数据)

Hbase跨集群数据同步验证_第15张图片

 

(3.1)只有全部删除后,才会出现了无法同步
主库的student表无法添加数据,无法查询,从库的student表可以查询,但无增量数据

 

 

Hbase跨集群数据同步验证_第16张图片

 

Hbase跨集群数据同步验证_第17张图片

(3.2)zk状态正常

 Hbase跨集群数据同步验证_第18张图片

Hbase跨集群数据同步验证_第19张图片

Hbase跨集群数据同步验证_第20张图片

 

(3.3)查看peers状态

Hbase跨集群数据同步验证_第21张图片

(3.4)修复

直接删除replication这个目录,再进行hmaster的主从切换,即重启hmaster。

Hbase跨集群数据同步验证_第22张图片

 

数据恢复,但从集群数据未同步过来。

Hbase跨集群数据同步验证_第23张图片

 

 

删除peers,重新建peers,增量数据同步成功,但中间的目录损坏时的增量数据,无法恢复,

 

Hbase跨集群数据同步验证_第24张图片Hbase跨集群数据同步验证_第25张图片

 

 

 

 

 

你可能感兴趣的:(hbase日常维护,大数据,hadoop,zookeeper)