CAP 定理如何应用于 HDFS?

Pal*_*shi 5 hdfs cap-theorem

我刚刚开始阅读有关 Hadoop 的内容,并遇到了 CAP 定理。您能否介绍一下 CAP 的哪两个组件适用于 HDFS 系统?

小智 10

一致性论证

\n

该文档非常清楚地指出:\n“Hadoop 文件系统的一致性模型是单副本更新语义;传统的本地 POSIX 文件系统的一致性模型。”

\n

(单副本更新语义意味着访问或更新给定文件的所有进程看到的文件内容将看起来好像只存在该文件的单个副本。)

\n

展望未来,该文件称:

\n
    \n
  • “创建。一旦写入新创建的文件的输出流上的 close() 操作完成,查询文件元数据和内容的集群内操作必须立即查看该文件及其数据。”
  • \n
  • “更新。一旦写入新创建文件的输出流上的 close() 操作完成,查询文件元数据和内容的集群内操作必须立即看到新数据。
  • \n
  • “删除。一旦在除 \xe2\x80\x9c/\xe2\x80\x9d 之外的路径上成功完成删除()操作,该操作不得可见或可访问。具体来说, listStatus()、open() 、rename () 和append() 操作必须失败。”
  • \n
\n

上述特征表明 HDFS 中存在“一致性”。

\n

来源:https ://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/filesystem/introduction.html

\n

分区容错性的争论

\n

HDFS 为名称节点和数据节点提供高可用性。

\n

来源:https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithNFS.html

\n

缺乏可用性的论据

\n

文档中非常清楚地提到了这一点(在“操作和故障”部分下):

\n

“完成操作的时间是不确定的,可能取决于实施情况和系统状态。”

\n

这表明 HDFS 中缺少 CAP 上下文中的“可用性”。

\n

来源:\n https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/filesystem/introduction.html

\n
\n

鉴于上述论点,我相信HDFS 支持“一致性和分区容错性”,而不是CAP 定理上下文中的“可用性” 。

\n
\n


小智 3

    \n
  • C \xe2\x80\x93 一致性(所有节点以同构形式看到数据,即每个节点在任何时刻都具有相同的数据知识)
  • \n
  • A \xe2\x80\x93 可用性(保证每个请求都会收到可能被处理或失败的响应)
  • \n
  • P \xe2\x80\x93 分区容错性(即使消息丢失或系统部分故障,系统仍继续运行)
  • \n
\n\n

谈到 Hadoop ,它支持可用性和分区容错属性。不支持 Consistency 属性,因为只有 namenode 具有副本放置位置的信息。此信息不适用于集群的每个节点。

\n