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

无法理解为什么Hbase不在CAP中,hbase,Hbase,我读过一篇文档,上面说Hbase是CAP理论中的一致性和分区 但我不明白为什么Hbase不是一个好的选择?我认为Hbase可以始终保持服务可用,那么为什么不提供服务呢 我对Hbase的理解不是A:当一个新行插入到Hbase中时,因为Hbase是即时一致的,它需要等待HDFS完成3个副本,但在这个副本同步时间内,新行看不到,这就是为什么Hbase不是A。但我不确定这一点。一般来说,CP系统意味着当发生“网络分区”时,系统将尝试确保一致性(或某些博客的“线性化”),而不是使系统“可用” 网络分区本质

我读过一篇文档,上面说Hbase是
CAP
理论中的一致性和分区

但我不明白为什么Hbase不是一个好的选择?我认为Hbase可以始终保持服务可用,那么为什么不提供服务呢


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

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

网络分区本质上意味着集群被划分为两个或多个部分,并且由于网络故障,它们无法相互通信。在此网络问题期间,如果向群集的一侧(区域服务器)发出写入请求,系统将不接受写入,直到问题得到解决。因此,当发生网络分区时,这本质上使系统不真正“可用”。在HBase中,网络分区可能导致区域处于过渡状态,受影响的区域将无法接受读/写操作。这就是为什么有些职位可能会认为HBase是一个CP系统的原因。对于支持可用性的系统,当系统处于分区状态时,不会阻止读取


在现实世界中,CAP中的可用性具有非常具体的含义。这与我们通常所说的“有空”略有不同。对于较小的网络分区,如果基于仲裁的系统可以快速从系统中删除集群的坏部分,则可以确保一致性,同时只需要几秒钟(甚至更短)的停机时间。因此,一般来说,它们仍然可以被认为是可用的,因为它们很快从故障中恢复过来。但严格来说,如果您希望在网络分区期间保持一致,则需要等待问题得到解决,然后才能服务于其他读取请求(因此不可用)

当某些区域服务器出现故障时,HBase不可用。HMaster需要一些时间:

  • 将崩溃区域重新分配给活动区域服务器
  • 重播WAL文件以恢复MemStore中保存的数据编辑 发生故障的RegionServer的(在RAM中)
  • 在此期间,与故障RegionServer对应的区域不可用。
    另请参阅“HBase崩溃恢复”。

    可能是因为主服务器,这是一个单点故障…?并且从发生故障的区域服务器恢复需要一些时间,在此期间区域不可用。谢谢你们回答:我想知道不是a的原因是:当一行插入HBase时,因为HBase是即时一致的,需要等待HDFS完成3个副本,但在此同步期间,无法看到新行,这就是为什么Hbase不是A。但我不确定这一点。Hbase和HDFS不等待副本。幸运的是,否则系统将非常缓慢,无法使用!正如shay____________________________________________。