4

根据我目前所读到的关于 CAP 定理的所有内容,没有一个分布式系统可以同时提供以下三个方面:可用性、一致性和分区容错性。

现在,Hadoop 2.x 引入了一项新功能,可以对其进行配置以消除 hadoop 集群所具有的单点故障(单个名称节点)。这样,集群就变得高度可用、一致且具有分区容错性。我对吗?还是我错过了什么?根据 CAP 的说法,如果系统试图提供所有这三个功能,它应该为延迟付出代价,新功能是否会将这种延迟添加到集群中?还是 Hadoop 破解了 CAP 定理?

4

2 回答 2

5

HDFS 在多个相关故障(例如,具有相同 HDFS 块的三个故障数据节点)的情况下不提供可用性。

来自CAP Confusion:分区容错问题

ZooKeeper 等系统是显式顺序一致的,因为集群中的节点足够少,写入仲裁的成本相对较小。Hadoop 分布式文件系统 (HDFS) 也选择了一致性——如果你不走运,三个失败的数据节点可能会导致文件的块不可用。这两个系统都设计为在真实网络中工作,但是,在这些网络中会发生分区和故障,当它们发生时,两个系统都将变得不可用,在一致性和可用性之间做出了选择。对于分布式数据存储来说,这种选择仍然是不可避免的现实。

于 2015-03-10T17:40:15.680 回答
2

HDFS 高可用性使 HDFS可用,但并非完全可用。如果网络分区使客户端无法与任一 NameNode 通信,则集群实际上不可用。

于 2015-03-10T19:21:05.963 回答