【问题标题】:a file on hdfs with 3 replication will store on 3 hosts?具有 3 个复制的 hdfs 上的文件将存储在 3 个主机上?
【发布时间】:2015-08-20 07:08:05
【问题描述】:

具有 3 个复制的 hdfs 上的文件将存储在 3 个主机上? 或者不仅存储在 3 台主机上?

【问题讨论】:

    标签: hadoop hdfs replication


    【解决方案1】:

    一个复制因子为 3 的文件将拥有所有构成它的每个块,存储 3 次(HDFS 存储块,而不是文件)。如果您有 3 个节点(如图顶部),那么每个块将在每个节点中存储一次。如果您有 1 个节点,则所有块都将存储在同一个节点中(一次,正如brandon.bell 评论的那样)。如果您有 5 个节点并且每个文件使用多个块(如图底部所示),那么,是的,将使用超过 3 个节点。

    原因是容错。假设任何两台主机都无法访问(在底部图中),您仍然可以检索构成文件的所有块。例如,如果 host4 和 host5 失败,那么您仍然可以从 host1 检索 block1 和从 host2 检索 block2。

    更多详情请参考this documentation。我还在this post 中找到了一篇关于hadoop 复制的好漫画。

    【讨论】:

    • 这是对的,除非您只有一个节点,否则该块不会在该主机上存储三次(除非您正在运行多个数据节点实例)。
    • 如果我有超过 5 个节点,我希望它存储在 3 个节点上。然后我会在这三个节点上快速读取文件(因为不需要从其他节点获取块)。但是如何在 3 个节点上存储文件?
    • 如果你有 5 个节点并且你的复制因子设置为 3,Namenode 将处理文件分发到三个节点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 2017-01-07
    • 2020-09-04
    • 2018-03-31
    • 2011-08-18
    • 1970-01-01
    相关资源
    最近更新 更多