【问题标题】:How do the "dfs.replication" and "dfs.datanode.data.dir" configurations work in a cluster?“dfs.replication”和“dfs.datanode.data.dir”配置如何在集群中工作?
【发布时间】:2015-12-20 06:17:23
【问题描述】:

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

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

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

所以我的问题是:dfs.replication 将在哪些节点上产生影响,如果为dfs.datanode.data.dir 设置了多个路径,这些额外的独立复制是否仅针对每个 Datanode,或者这些也与某些顺便说一句dfs.replication 因素?

另外,当数据已经复制到其他节点上时,Datanodes 上的额外本地复制有什么用?

【问题讨论】:

    标签: hadoop hdfs replication


    【解决方案1】:

    对了,先来看看docs中这些配置标志的描述:

    配置选项: dfs.replication

    默认块复制。可以在创建文件时指定实际的复制次数。如果创建时没有指定复制,则使用默认值。

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

    问:它会影响哪些节点?

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

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

    Hadoop 的默认策略是将第一个副本放置在与客户端相同的节点上(对于在 集群,一个节点是随机选择的,尽管系统尽量不选择太满或太忙的节点)。这 第二个副本放置在与第一个(离架)不同的机架上,随机选择。第三个副本放置在 与第二个机架相同,但在随机选择的不同节点上。更多的副本被放置在随机节点上 集群,尽管系统会尽量避免在同一个机架上放置过多的副本。

    single-modepseudo-distributed 模式下,出于显而易见的原因,此选项设置为 1 ,你只有一台机器。在多机 - 集群 设置中,建议使用默认值 3。

    配置选项: datanode.data.dir

    确定 DFS 数据节点应在本地文件系统上存储其块的位置。 如果这是一个以逗号分隔的目录列表,则数据将存储在所有命名的目录中,通常在不同的设备上。不存在的目录将被忽略。

    问:这些额外的独立复制是否仅针对每个 Datanode,或者是否也以某种方式受到 dfs.replication 因素的影响?

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


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-31
      相关资源
      最近更新 更多