CAP与分布式系统

时间:2013-11-12 07:21:33

标签: hadoop nosql

当我们谈论nosql分布式数据库系统时,我们知道所有这些都属于CAP theoram的三分之二。对于分布式集群,网络故障和节点故障是不可避免的,因此分区容差是必需的,因此我们从可用性和一致性中选择一个。所以它基本上是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. 是否有任何系统可以提供CAP,但不包括Cassandra最终一致性的概念。

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

  5. 提前致谢:)

1 个答案:

答案 0 :(得分:14)

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

  

NameNode是HDFS群集的单点故障。 HDFS目前不是高可用性系统。 NameNode关闭时,文件系统将脱机。有一个可选的SecondaryNameNode,可以托管在单独的计算机上。它只通过将编辑文件合并到fsimage文件和does not provide any real redundancy来创建命名空间的检查点。

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

  

是否有任何系统可以一起提供CAP?

是的,市场营销和其他非技术出版物中经常提到这样的系统。

  

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

这是一个商业用例决定。当可用性更重要时,他们选择AP。当一致性更重要时,他们选择CP。通常,当钱转手时,一致性优先。几乎所有其他案例都倾向于可用性。

  

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

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