我已经按照 Apache 的“单节点设置”说明在单节点上设置了 dfs.replication

但后来我遵循了“集群设置”,但它没有提到这个属性,所以我不知道这是要在 Namenode 上设置的属性,还是/仅在 Datanodes 上设置..

我还读到在数据节点上的 dfs.datanode.data.dir 中设置多个(逗号分隔)路径将复制所有路径上的数据。

所以我的问题是:dfs.replication 将在哪个节点上产生影响,如果设置了 dfs.datanode.data.dir 的多个路径,这些额外的独立复制是否只针对每个 Datanode,或者它们是否也以某种方式与 dfs.replication 因素相关联?

而且,当数据已经在其他节点上复制时,这个额外的本地复制在 Datanodes 上有什么用?

最佳答案

对了,首先让我们看看 docs 中这些配置标志的描述:

配置选项: dfs.replication



直观地说,这告诉我们可以使用此选项来指定要存储的数据块的复制因子。此属性预先配置为等于 3。

问:它会影响哪些节点? :

答案: 从存储的角度来看 ,它影响数据节点,主要是因为它们是存储块的节点。当然,从技术上讲,它确实会影响 Namenode,特别是 FsImage (文件系统镜像)文件,其中包含 Datanodes - Stored Blocks 的所有映射。

从“功能性”的角度来看 它主要影响名称节点,因为它们决定存储这些块的位置。一般的 -default- 策略是:



单模式 伪分布式 模式中,出于显而易见的原因,此选项设置为 1,您只有一台机器。在多机 - 集群 设置中,建议默认值为 3。

配置选项: datanode.data.dir



问:这些额外的独立复制是仅针对每个 Datanode,还是通过 dfs.replication 因子以某种方式绑定(bind)?

答案: 根据我的阅读,指定 datanode.data.dir 并不意味着会有更多的块复制。它只是在运行 datanode 实例的机器上指定 目录 ,您要在其中存储块。

看看这个 PDF on HDFS Design 。它比我能给出的任何答案都要好,它应该可以帮助您更好地理解这些概念。

关于hadoop - "dfs.replication"和 "dfs.datanode.data.dir"配置如何在集群中工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32730948/

10-12 23:04