【问题标题】:HDFS replication factorHDFS 复制因子
【发布时间】:2011-10-03 03:25:37
【问题描述】:

当我将文件上传到 HDFS 时,如果我将复制因子设置为 1,那么文件拆分将驻留在一台机器上,或者拆分将分布到网络上的多台机器上?

hadoop fs -D dfs.replication=1 -copyFromLocal file.txt /user/ablimit

【问题讨论】:

    标签: hadoop hdfs


    【解决方案1】:

    根据Hadoop : Definitive Guide

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

    这个逻辑是有意义的,因为它减少了不同节点之间的网络通信。但是,这本书是 2009 年出版的,Hadoop 框架发生了很多变化。

    我认为这取决于客户端是否与 Hadoop 节点相同。如果客户端是 Hadoop 节点,则所有拆分都将位于同一节点上。尽管集群中有多个节点,但这并没有提供更好的读/写吞吐量。如果客户端与 Hadoop 节点不同,则每次拆分都会随机选择节点,因此拆分会分布在集群中的节点上。现在,这提供了更好的读/写吞吐量。

    写入多个节点的一个优点是,即使其中一个节点出现故障,也可能有几个分片出现故障,但至少可以从剩余的分片中恢复一些数据。

    【讨论】:

    【解决方案2】:

    如果您将复制设置为 1,则文件将仅存在于客户端节点上,即您上传文件的节点。

    【讨论】:

    • 这是真的iff客户端节点也运行DataNode服务。
    • 即使客户端本地数据节点已满,这是真的吗?即,与使用不同的 DN 相比,复制会失败吗?
    【解决方案3】:
    • 如果您的集群是单节点,那么当您上传文件时,它将根据块大小溢出并保留在单机中。
    • 如果您的集群是多节点,那么当您上传文件时,它将根据块大小溢出,并通过管道分发到集群中的不同数据节点,NameNode 将决定数据应在集群中移动的位置。

    HDFS 复制因子用于制作数据的副本(即,如果您的复制因子为 2,那么您上传到 HDFS 的所有数据都会有一个副本。

    【讨论】:

    • 如果在文件上传到 hdfs 后更改 hdfs-site.xml 中的复制因子值,系统会自动复制它还是需要执行 hdfs 平衡器命令?跨度>
    【解决方案4】:

    如果设置复制因子为 1 则表示单节点集群。它只有一个客户端节点http://commandstech.com/replication-factor-in-hadoop/。您可以在其中上传文件,然后在单个节点或客户端节点中使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-24
      • 2013-07-21
      • 2016-05-26
      • 2016-02-09
      • 1970-01-01
      • 1970-01-01
      • 2013-06-18
      相关资源
      最近更新 更多