我遵循了apache的“单节点设置”说明来设置 dfs.replication
在单个节点上。
但是我遵循了“cluster setup”,但是它没有提到这个属性,所以我不知道这是要在namenode上设置的属性,还是也/只在datanodes上设置的属性。。
我也读过在中设置多个(逗号分隔的)路径 dfs.datanode.data.dir
数据上的节点将复制所有路径上的数据。
所以我的问题是:在哪个节点上 dfs.replication
如果有多条路径 dfs.datanode.data.dir
这些额外的独立复制是仅针对每个datanode,还是也以某种方式由 dfs.replication
因素?
而且,当数据已经在其他节点上复制时,在datanodes上使用这种额外的本地复制有什么好处?
1条答案
按热度按时间tcbh2hod1#
好的,首先让我们看看文档中对这些配置标志的描述:
配置option:dfs.replication
默认块复制。创建文件时可以指定实际的复制次数。如果在创建时中未指定复制,则使用默认值。
直观地说,这说明我们可以使用此选项为要存储的数据块指定复制因子。此属性已预先配置为等于3。
问:影响哪些节点
answer:from a 从存储的Angular 来看,它主要影响数据节点,因为它们是存储块的节点。当然,从技术上讲,它确实会影响namenode,特别是fsimage(文件系统映像)文件,它包含datanodes存储块的所有Map。
从“功能”的Angular 来看,它主要影响namenodes,因为namenodes决定将这些块存储在何处。一般的默认策略是:
hadoop的默认策略是将第一个副本放置在与客户机相同的节点上(对于在集群外运行的客户机,节点是随机选择的,尽管系统尝试不选择太满或太忙的节点)。第二个复制品放置在与第一个不同的机架上(机架外),随机选择。第三个复制副本与第二个复制副本放在同一机架上,但随机选择在不同的节点上。进一步的副本被放置在群集中的随机节点上,尽管系统试图避免在同一机架上放置太多副本。
在单模式和伪分布式模式下,此选项设置为1,原因很明显,您只有一台机器。在多机器集群设置中,建议默认值为3。
配置option:datanode.data.dir
确定dfs数据节点应在本地文件系统上的何处存储其块。如果这是一个以逗号分隔的目录列表,那么数据将存储在所有命名的目录中,通常存储在不同的设备上。不存在的目录将被忽略。
问:这些额外的独立复制是仅针对每个datanode,还是也以某种方式与
dfs.replication
因素?答:根据我所读的内容,说明
datanode.data.dir
并不意味着会有更多的块复制。它只指定运行datanode示例的计算机上要在其中存储块的目录。看看这个关于hdfs设计的pdf。这比我能给出的任何答案都要好,它应该能帮助你更好地理解这些概念。