当前位置: 首页 > 知识库问答 >
问题:

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

羊舌涵涤
2023-03-14

hdfs-site.xml

DFS.Replication值已配置%3

    null

如果不是,会怎么样?

共有1个答案

卢英范
2023-03-14

首先,我想尝试重申你的问题,以求澄清,确保我明白:

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

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

你的问题也提到了来自数据阳极的心跳,我想这意味着你对数据阳极和名称节点之间的交互作用如何与复制相关感兴趣。DataNodes和NameNodes之间还有另一种形式的通信,称为块报告。块报告是DataNodes告诉NameNodes它们存储哪些块副本的手段。NameNode分析来自所有数据阳极的块报告,以确定块是复制不足还是复制过度。如果一个块复制不足(例如,复制因子为2,但只有一个副本),则NameNode会调度重新复制工作,以便另一个DataNode生成副本的副本。如果一个块被过度复制(例如复制因子为3,但有4个副本),那么NameNode会调度其中一个副本被删除,最终其中一个Datanode会在本地删除它。

 类似资料:
  • 问题内容: 如文档所述,您可以使用可选参数调用webdriver.FirefoxProfile()来指向浏览器要使用的特定配置文件的目录。我注意到运行此命令花了很长时间,因此当我查看代码时,似乎正在复制指定的配置文件问题是,复制配置文件需要很长时间(大约> 30分钟,没有耐心等待它完成。) 我正在使用用户脚本和selenium的混合为我做一些自动化,因此每次想测试我的代码时都要设置一个新的配置文件

  • 我正在尝试安装和配置nginx,但我需要复制一个完整的配置文件。我尝试简单地将它添加到Dockerfile中,因为它只有几行,但Dockerfile似乎对多行命令没有很好的支持。我的意思是我需要复制我的配置文件的原样,我不能污染它的'sed','cat'或'\'在每一行。 有些人建议将配置文件放在公共git存储库中,我想如果没有其他方法的话,我可以这么做。但我一点也不喜欢,因为这没道理。我不想为这

  • 这里简单描述了如何为你当前的MySQL服务器设置完整的复制。假设你想要复制主服务器上的所有数据库,并且还没有配置的复制。你需要关闭主服务器来完成下面所列的步骤。 下面的程序针对设置一个从服务器,你可以用来设置多个从服务器。 虽然该方法是设置从服务器的最直接的途径,它并不是唯一的一个。例如,如果你有一个主服务器的数据快照,并且主服务器已经设置了服务器ID,启用了二进制日志,不需要关闭主服务器或停止对

  • 我想知道如何使用JCIFS在SMB共享中将文件从一个文件夹移动到另一个文件夹。 首先,没有任何方法。 然后,这种方法: 引发异常,

  • 我有一些基于JSF和CDI的web操作,它在Websphere ND8.5中工作得很好。然而,它在Liberty Profile16(WebSphere Application Server 16.0.0.3/WLP-1.0.14)中不起作用。如果我试图用已经部署的战争来启动自由配置文件,它会导致 我听到有人说,这是因为反射(CDI依赖的某些特性)在Liberty Profile中不起作用,但在W

  • 我从https://www.confluent.io/connector/kafka-connect-cdc-microsoft-sql/下载了插件文件, 它有三个文件夹lib,etc,doc,manifest.json。etc具有connect-avro-docker.properties、mssqlsource.properties、reproperties。我可以将CONNECT_PLUGI