配置HBase主备集群数据自动备份
前提条件
- 主备集群已经安装并且启动。
- 主备集群上的时间必须一致,而且主备集群上的NTP服务必须使用同一个时间源。
- 当主集群HBase服务关闭时,Zookeeper和HDFS服务应该启动并运行。
- 该工具应该由启动HBase进程的系统用户运行。
- 如果处于安全模式,请确保备集群的HBase系统用户具有主集群HDFS的读取权限。因为备集群将更新HBase系统Zookeeper节点和HDFS文件。
- 主集群HBase故障后,主集群的Zookeeper、文件系统和网络依然可用。
场景介绍
Replication机制可以使用WAL将一个集群的状态与另一个集群的状态保持同步。启用HBase备份后,如果主集群出现故障,ReplicationSyncUp工具会使用来自ZooKeeper的信息将主集群中的启用HBase备份功能的数据增量同步到备集群中。数据同步完成后,备集群可以作为主集群使用。
参数配置
参数 |
描述 |
默认值 |
---|---|---|
hbase.replication.bulkload.enabled |
是否开启批量加载数据复制功能。参数值类型为Boolean。开启批量加载数据复制功能后该参数须在主集群中设置为“true”。 |
false |
hbase.replication.cluster.id |
源HBase集群ID。开启批量加载数据复制功能必须设置该参数,在源集群定义,参数值类型为String。 |
- |
使用ReplicationSyncUp工具
在主集群hbase shell执行以下命令:
hbase org.apache.hadoop.hbase.replication.regionserver.ReplicationSyncUp -Dreplication.sleep.before.failover=1
replication.sleep.before.failover是指在RegionServer启动失败时备份其剩余数据前需要的休眠时间。由于30秒(默认值)的睡眠时间没有任何意义,因此将其设置为1(s),使备份过程更快触发。
注意事项
- 当主集群关闭时,此工具将从ZooKeeper节点(RegionServer znode)获得WAL的处理进度以及WAL的处理队列,并将未复制的队列复制到备集群中。
- 每个主集群的RegionServer在备集群ZooKeeper上的replication节点下都有自己的znode。它包含每个对等集群的一个znode。
- 当Regionserver故障时,主集群的每个RegionServer都会通过watcher收到通知,并尝试锁定故障RegionServer的znode,包含它的队列。成功创建的RegionServer会将所有队列转移到自己队列的znode下。队列传输后,将从旧位置删除。
- 在主集群关闭期间,ReplicationSyncUp工具将使用来自ZooKeeper节点的信息同步主备集群的数据,并且RegionServer znode的wals将被移动到备集群下。
限制和约束
如果备集群处于关闭状态或关闭了对等关系,该工具正常运行,但该对等关系复制不会发生。