根据我到目前为止所读到的关于CAP定理的所有内容,没有分布式系统可以提供以下所有三个:可用性,一致性和分区容差。
现在,Hadoop 2.x引入了一项新功能,可以对其进行配置,以消除hadoop群集所具有的单点故障(单一名称节点)。通过这种方式,群集变得高度可用,一致且分区容忍。 我对吗?或者我错过了什么?根据CAP,如果系统试图提供所有三个功能,它应该为延迟付出代价,新功能是否会为群集增加这种延迟?或者Hadoop破解了CAP定理?
答案 0 :(得分:4)
HDFS在多个相关故障的情况下不提供可用性(例如,三个具有相同HDFS块的故障数据节点)。
来自CAP Confusion: Problems with partition tolerance
ZooKeeper之类的系统是明确顺序一致的,因为群集中的节点足够少,写入仲裁的成本相对较小。 Hadoop分布式文件系统(HDFS)也选择一致性 - 如果您运气不好,三个失败的数据节点可能会导致文件块无法使用。这两个系统都设计为在真实网络中工作,然而,在这些系统中,分区和故障将发生,当它们发生时,两个系统都将变得不可用,在一致性和可用性之间做出选择。这种选择仍然是分布式数据存储不可避免的现实。
答案 1 :(得分:1)
HDFS高可用性使HDFS 更多可用,但并非完全可用。如果网络分区使客户端无法与NameNode通信,则群集实际上不可用。