更新时间:2022-12-14 GMT+08:00

使用ReplicationSyncUp工具

前提条件

  1. 主备集群已经安装并且启动。
  2. 主备集群上的时间必须一致,而且主备集群上的NTP服务必须使用同一个时间源。
  3. 当主集群HBase服务关闭时,Zookeeper和HDFS服务应该启动并运行。
  4. 该工具应该由启动HBase进程的系统用户运行。
  5. 如果处于安全模式,请确保备用集群的HBase系统用户具有主集群HDFS的读取权限。因为它将更新HBase系统Zookeeper节点和HDFS文件。
  6. 主集群HBase故障后,主集群的Zookeeper,文件系统和网络依然可用。

场景介绍

Replication机制可以使用WAL将一个集群的状态与另一个集群的状态保持同步。启用HBase备份后,若主集群出现故障,ReplicationSyncUp工具会使用来自zookeeper的信息将主集群中的启用HBase备份功能的数据增量同步到备集群中。数据同步完成后,备集群可以作为主集群使用。

参数配置

参数

描述

默认值

hbase.replication.bulkload.enabled

是否开启批量加载数据复制功能。参数值类型为Boolean。开启批量加载数据复制功能后该参数须在主集群中设置为true。

false

hbase.replication.cluster.id

源HBase集群ID。开启批量加载数据复制功能是必须设置该参数,在源集群定义。参数值类型为String。

-

工具使用

在主集群client上输入如下命令使用:

hbase org.apache.hadoop.hbase.replication.regionserver.ReplicationSyncUp -Dreplication.sleep.before.failover=1

replication.sleep.before.failover是指在RegionServer启动失败时备份其剩余数据前需要的休眠时间。由于30秒(默认值)的睡眠时间没有任何意义,因此将其设置为1(s),使备份过程更快触发。

注意事项

  1. 当主集群关闭时,此工具将从ZooKeeper节点(RS znode)获得WAL的处理进度以及WAL的处理队列,并将未复制的队列复制到备集群中。
  2. 每个主集群的RegionServer在备集群ZooKeeper上的replication节点下都有自己的znode。它包含每个对等集群的一个znode。
  3. 当Regionserver故障时,主集群的每个RegionServer都会通过watcher收到通知,并尝试锁定故障RegionServer的znode,包含它的队列。成功创建的RegionServer会将所有队列转移到自己队列的znode下。队列传输后,它们将从旧位置删除。
  4. 在主集群关闭期间,ReplicationSyncUp工具将使用来自ZooKeeper节点的信息同步主备集群的数据,并且RegionServer znode的wals将被移动到备集群下。

限制和约束

如果备集群处于关闭状态或关闭了对等关系,该工具正常运行,只有该对等关系复制不会发生。