hbase的replication机制很像mysql statement-based replication。它是通过WALEdit和hlog来实现的。当请求发送给master cluster时,hlog日志放入hdfs的同时进入replication队列,由slave cluster通过zookeeper获取并写入slave的表中。目前的版本仅支持一个slave cluster
![](http://dl.iteye.com/upload/attachment/452914/c954c59a-ad2f-336f-aebf-a3319ac63489.png)
具体配置如下:
1 需要保证主从cluster上有相同的table,并且结构一致,都enable
2 保证主从cluster的版本都在0.90.0以上
3 主从cluster的机器是两两互通的
4 master cluster的hbase-site.xml中需要添加以下选项:
<property> <name>hbase.replication</name> <value>true</value> </property>
5 进入master cluster的shell,执行:
add_peer '1', "slave-zk-1,slave-zk-2,...:slave-2181:/slave-zk-parent"
6 开启要复制的family,进入hbase shell,执行:
disable 'your_table' alter 'your_table', {NAME => 'family_name', REPLICATION_SCOPE => '1'} enable 'your_table'
此时replication己经开始了
7 要中止或继续replication,使用stop_replication或start_replication
在复制过程中,可以通过查看regionserver的日志来跟踪复制的进度:
Considering 1 rs, with ratio 0.1
Getting 1 rs from peer cluster # 0
Choosing peer yourip:62020
要检查复制的数据是否完整,可以利用hbase提供的小工具verifyrep:
hbase org.apache.hadoop.hbase.mapreduce.replication.VerifyReplication --starttime=1265875194289 --stoptime=1265878794289 1 TestTable
这里的1是上面的peer_id
更完整的说明见: http://hbase.apache.org/replication.html