【发布时间】:2011-10-03 03:25:37
【问题描述】:
当我将文件上传到 HDFS 时,如果我将复制因子设置为 1,那么文件拆分将驻留在一台机器上,或者拆分将分布到网络上的多台机器上?
hadoop fs -D dfs.replication=1 -copyFromLocal file.txt /user/ablimit
【问题讨论】:
当我将文件上传到 HDFS 时,如果我将复制因子设置为 1,那么文件拆分将驻留在一台机器上,或者拆分将分布到网络上的多台机器上?
hadoop fs -D dfs.replication=1 -copyFromLocal file.txt /user/ablimit
【问题讨论】:
Hadoop 的默认策略是将第一个副本放在与客户端相同的节点上(对于 在集群外运行的客户端,随机选择一个节点,尽管系统 尽量不要选择太满或太忙的节点)。第二个副本放置在 与第一个机架不同的机架(机架外),随机选择。第三个副本放置在 与第二个机架相同,但在随机选择的不同节点上。更多复制品 被放置在集群上的随机节点上,尽管系统试图避免放置 同一个机架上的副本太多。
这个逻辑是有意义的,因为它减少了不同节点之间的网络通信。但是,这本书是 2009 年出版的,Hadoop 框架发生了很多变化。
我认为这取决于客户端是否与 Hadoop 节点相同。如果客户端是 Hadoop 节点,则所有拆分都将位于同一节点上。尽管集群中有多个节点,但这并没有提供更好的读/写吞吐量。如果客户端与 Hadoop 节点不同,则每次拆分都会随机选择节点,因此拆分会分布在集群中的节点上。现在,这提供了更好的读/写吞吐量。
写入多个节点的一个优点是,即使其中一个节点出现故障,也可能有几个分片出现故障,但至少可以从剩余的分片中恢复一些数据。
【讨论】:
如果您将复制设置为 1,则文件将仅存在于客户端节点上,即您上传文件的节点。
【讨论】:
HDFS 复制因子用于制作数据的副本(即,如果您的复制因子为 2,那么您上传到 HDFS 的所有数据都会有一个副本。
【讨论】:
如果设置复制因子为 1 则表示单节点集群。它只有一个客户端节点http://commandstech.com/replication-factor-in-hadoop/。您可以在其中上传文件,然后在单个节点或客户端节点中使用。
【讨论】: