gpt4 book ai didi

hadoop - NameNode如何识别特定文件复制是设置值,而不是配置的复制3?

转载 作者:可可西里 更新时间:2023-11-01 15:10:13 25 4
gpt4 key购买 nike

hdfs-site.xml:

dfs.replication 值配置3


假设我将特定文件的复制设置为 2:

./bin/hadoop dfs -setrep -w 2/path/to/file.txt

  1. 当NameNode收到来自DataNode的心跳时,

NameNode是否会认为是指定文件path/to/file.txt 是否正在根据配置的复制进行复制?

如果不是,会怎样?

最佳答案

首先,为了清楚起见,我想尝试重述您的问题,以确保我理解:

NameNode 是否会将手动设置为低于默认值 (dfs.replication) 的复制因子的文件视为复制不足?

没有。 NameNode 将每个文件的复制因子单独存储在其元数据中,即使复制因子未通过调用 -setrep 显式设置。默认情况下,每个文件的元数据将复制 dfs.replication 中指定的复制因子(在您的示例中为 3)。它可以被覆盖,例如通过调用 -setrep。当 NameNode 检查文件是否复制不足时,它会检查存储在该单个文件的元数据中的确切复制因子,而不是 dfs.replication。如果文件的复制因子是 2,并且它的每个 block 有 2 个副本,那么这很好,NameNode 不会认为它是复制不足的。

您的问题还提到了 DataNode 的心跳,我认为这意味着您对 DataNode 和 NameNode 之间的交互如何与复制相关感兴趣。 DataNode 和 NameNode 之间还有另一种通信形式,称为 block 报告。 block 报告是 DataNode 告诉 NameNode 它们存储了哪些 block 副本的方式。 NameNode 分析来自所有 DataNode 的 block 报告,以确定 block 是复制不足还是复制过度。如果一个 block 复制不足(例如复制因子为 2,但只有一个副本),那么 NameNode 会安排重新复制工作,以便另一个 DataNode 制作副本的副本。如果一个 block 被过度复制(例如复制因子为 3,但有 4 个副本),那么 NameNode 会安排删除其中一个副本,最终其中一个 DataNode 将在本地删除它。

关于hadoop - NameNode如何识别特定文件复制是设置值,而不是配置的复制3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44593637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com