Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop hdfs上具有3个复制的文件将存储在3台主机上?_Hadoop_Hdfs_Replication - Fatal编程技术网

Hadoop hdfs上具有3个复制的文件将存储在3台主机上?

Hadoop hdfs上具有3个复制的文件将存储在3台主机上?,hadoop,hdfs,replication,Hadoop,Hdfs,Replication,hdfs上具有3个复制的文件将存储在3台主机上? 或者不仅仅存储在3台主机上 一个复制因子为3的文件会将其所有的块存储三次(HDFS存储块,而不是文件)。如果有3个节点(如图的顶部),则每个块将在每个节点中存储一次。如果有1个节点,所有块都将存储在同一个节点中(一次,正如brandon.bell所评论的)。如果有5个节点,并且每个文件使用多个块(如图底部所示),则会使用3个以上的节点 原因是容错。假设任何两台主机都无法访问(如下图所示),您仍然可以检索构成文件的所有块。例如,如果host4和ho

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

一个复制因子为3的文件会将其所有的块存储三次(HDFS存储块,而不是文件)。如果有3个节点(如图的顶部),则每个块将在每个节点中存储一次。如果有1个节点,所有块都将存储在同一个节点中(一次,正如brandon.bell所评论的)。如果有5个节点,并且每个文件使用多个块(如图底部所示),则会使用3个以上的节点

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


有关更多详细信息,请参阅。在中,我还发现了一本关于hadoop复制的好笑漫画。

这是正确的,除非您只有一个节点,否则块不会在该主机上存储三次(除非您运行多个datanode实例)。如果我有5个以上的节点,我希望它存储在3个节点上。然后我将在这3个节点上快速读取文件(因为不需要从其他节点获取块)。但是如何在3个节点上存储文件呢?如果您有5个节点,并且您的复制因子设置为3,那么Namenode将处理将文件分发到其中3个节点的过程。