11

当我们谈论nosql分布式数据库系统时,我们知道它们都属于CAP定理的三分之二。对于网络故障和节点故障不可避免的分布式集群,分区容忍是必要的,因此让我们从可用性和一致性中选择一个。所以它基本上是CP或AP。

我的问题是

  1. hadoop属于哪一类。

  2. 假设我有一个包含 6 个节点 ABC 和 DEF 的集群,在网络故障期间,假设节点 A、B、C 和节点 D、E、F 分为两个独立的集群。

    现在在一致和分区容错系统 (CP) 模型中,因为节点 A 中的更新不会复制到节点 D,系统的一致性不会允许用户更新或读取数据,直到网络再次运行,从而使数据库关闭。

    而可用和分区容错系统将允许节点 D 的用户在节点 A 进行更新时查看旧数据,但不保证节点 D 的用户获得最新数据。但是在网络再次运行一段时间后,它会将节点 A 的最新数据复制到节点 D 中,从而允许节点 D 的用户查看最新数据。

    从以上两种情况我们可以得出结论,在 AP 模型中,数据库没有运行空间,因此即使在故障期间也允许用户写入和读取,并在网络再次启动时向用户承诺最新数据,那么人们为什么要选择一致和分区容错模型(CP)。在我看来,在网络故障期间(AP)比(CP)具有优势,允许用户在(CP)下的数据库关闭时读取和写入数据。

  3. 除了 Cassandra 的最终一致性的概念之外,有没有可以一起提供 CAP 的系统。

  4. 用户何时选择可用性而不是一致性,反之亦然。是否有任何数据库允许用户在 CP 和 AP 之间相应地切换其选择。

提前致谢 :)

4

1 回答 1

18

HDFS 有一个独特的中央决策点,即namenode. 因此它只能落在 CP 端,因为关闭 namenode 会关闭整个 HDFS 系统(没有可用性)。Hadoop 不会试图隐藏这一点:

NameNode 是 HDFS 集群的单点故障。HDFS 目前不是高可用性系统。当 NameNode 宕机时,文件系统会离线。有一个可选的 SecondaryNameNode 可以托管在单独的机器上。它仅通过将编辑文件合并到 fsimage 文件中来创建命名空间的检查点,并且不提供任何真正的冗余

由于决定将数据放置在哪里以及可以从哪里读取数据始终由 namenode 处理,namenode 在内存中保持一致的视图,因此 HDFS 始终是一致的 (C)。它也是分区容错的,因为它可以处理丢失的数据节点,受复制因子和数据拓扑策略的影响。

有没有可以一起提供CAP的系统?

是的,此类系统经常在市场营销和其他非技术出版物中提及。

用户何时选择可用性而不是一致性,反之亦然。

这是一个业务用例决策。当可用性更重要时,他们会选择 AP。当一致性更重要时,他们会选择 CP。一般来说,当货币易手时,一致性优先。几乎所有其他情况都有利于可用性。

是否有任何数据库允许用户在 CP 和 AP 之间相应地切换其选择

允许您修改写入和读取仲裁的系统可以根据需要调整为 CP 或 AP。

于 2013-11-12T08:14:07.500 回答