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