HBase复制是一种在不同HBase部署中复制数据的方法。它可以作为一种故障恢复的方法,并提供HBase层次的高可用性。在实际应用中,例如,可以将数据从一个面向页面的集群复制到一个MapReduce集群,后者可以同时处理新数据和历史数据。然后再自动将数据传回面向页面请求的集群。
HBase复制中最基本的架构模式是“主推送”(master-push),因为每个region server都有自己的WAL(或HLog),所以很容易保存现在正在复制的位置。正如众所周知的解决方案-Mysql的主/从复制,只使用二进制文件来跟踪修改。一个主集群可以将数据复制到任意数目的从集群,每个region server都会参与复制自己的修改。更多的关于主/从复制或其他类型的复制,可以参考文章《How Google Serves Data From Multiple Datacenters》。
复制是异步进行的,意味着集群可以是地理上彼此远离的,它们之间的连接可以在某个时刻断开,在主集群上的修改不能马上在从集群上进行同步(最终一致性)。
这里使用的复制格式从概念上和《MySQL’s statement-based replication》类似。和SQL语句不同,所有的WALEdits(包括来自客户端的Put和Delete产生的多单元格操作)都会被复制以保证原子性。
来自每个region server的HLog是HBase复制的基础,并且只要它们需要将数据复制到从集群