无法理解为什么Hbase在CAP中不是A

时间:2018-07-17 06:45:29

标签: hbase

我阅读了一篇文档,其中说Hbase是CAP理论中的一致性和分区性。

但是我不明白为什么Hbase不是A?我认为Hbase可以始终保持服务可用,那为什么不呢?

我对Hbase的理解不是:在Hbase中插入新行时,由于Hbase是立即一致的,因此需要等待HDFS完成3个副本,但是在此副本同步期间,看不到新行,即为什么Hbase不是A。但是对此我不确定。

2 个答案:

答案 0 :(得分:1)

通常来说,CP系统意味着发生“网络分区”时,系统将尝试确保一致性(或某些博客的“线性化”),而不是使系统“可用”。

网络分区本质上是指将群集划分为两个或多个部分,并且由于网络故障它们无法相互通信。在此网络问题期间,如果向集群的一侧(区域服务器)发出了写请求,则在问题解决之前,系统将不接受写操作。因此,这实际上使系统在发生网络分区时无法真正“可用”。在HBase中,网络分区可能导致区域转换,并且受影响的那些区域将无法接受读/写。这就是某些帖子可能将HBase视为CP系统的原因。对于有利于可用性的系统,当系统处于分区状态时,不会阻止读取。

在现实世界中,CAP的可用性具有非常特殊的含义。它与可用的一般含义略有不同。在较小的网络分区的情况下,如果基于仲裁的系统可以从系统中快速删除群集的不良部分,则可以确保一致性,而只有短暂的停机时间(例如几秒钟(甚至可能更短))。因此,它们仍然可以被认为是通用术语,因为它们可以从故障中快速恢复。但严格来说,如果要在网络分区期间保持一致,则需要等待问题解决后才能处理其他读取请求(因此不可用)。

答案 1 :(得分:0)

当某些RegionServer发生故障时,

HBase不可用。 HMaster需要一些时间:

  1. 将崩溃的区域重新分配给活动的RegionServer。
  2. 重放WAL文件以恢复保存在MemStore中的数据编辑 (在RAM中)失败的RegionServer。

在此期间,与故障的RegionServer相对应的Region是不可使用的。 另请参见“ HBase崩溃恢复” here

相关问题