HBase HA高可用性介绍
从架构上看,HBase从一开始就有了强大的一致性保证。所有的读写操作都通过一个RegionServer进行路由,这可以确保所有写操作按顺序进行,所有读操作都可访问最近提交的数据。
但是,由于读取到单个位置的这种“single homing”,如果服务器变得不可用,则RegionServer中托管的表区域将在一段时间内不可用,直到恢复为止。区域恢复过程分为三个阶段:检测,分配和恢复。其中,检测阶段通常是最长的,根据ZooKeeper会话超时设置(如果RegionServer变得不可用但ZooKeeper会话存在),目前大约为20到30秒。之后,我们从Write Ahead Log中恢复数据并将该区域分配给不同的服务器。在此期间 - 直到恢复完成 - 客户端无法读取该区域的数据。
对于一些使用情况,数据可能是只读的,或者读取一些过时的数据是可以接受的。通过timeline-consistent的高可用性读取,HBase可以用于这类对延迟敏感的应用,这些应用可能会在读取完成时产生时间限制。
为了实现读取的高可用性,HBase提供了一个称为“区域复制”的功能。在此模型中,对于表的每个区域,可以有多个副本在不同的RegionServers中打开。默认情况下,区域复制设置为1,因此只部署单个区域副本,并且原始模型没有任何更改。如果区域复制设置为2或