我在谷歌上搜索机架拓扑,发现了这个问题…可能是hadoop认证问题:您的集群在三个不同的机架中有从属节点,并且您已经编写了一个机架拓扑脚本,将每台机器标识为位于机架1、机架2或机架3中。集群之外的客户机将一个小的(一个块)文件写入hdfs。块的第一个副本被写入rack2上的节点。如何确定其他两个复制副本的块位置?一些站点的答案是要么两者都将写入rack1上的节点,要么两者都将写入rack3上的节点。为什么不把下一个块写在rack2本身上,把剩下的块写在rack1或rack3上呢?
ggazkfy81#
如果客户机位于机架外部,则它写入的第一个复制将被视为本地节点。根据文档,hadoop将副本放置在3个不同的数据节点中:本地数据节点:客户端启动写操作的数据节点(例如,使用hadoopfs-cp命令)。第一个复制品放在这里。如果客户机正在从集群外部写入数据,则随机选择此节点。它是写入第一个复制副本的节点。非机架数据节点:存在于另一机架上的数据节点。第二个复制品放在这里。机架上数据节点:与第一个数据节点物理上位于同一机架上的数据节点。第三个复制品放在这里因此,在您的情况下,当第一个副本写入机架2中时,它将是本地数据节点。机架1/机架3中的第二个副本[机架外数据节点]。第三个副本再次出现在机架2中[机架上数据节点]。
1条答案
按热度按时间ggazkfy81#
如果客户机位于机架外部,则它写入的第一个复制将被视为本地节点。
根据文档,hadoop将副本放置在3个不同的数据节点中:
本地数据节点:客户端启动写操作的数据节点(例如,使用hadoopfs-cp命令)。第一个复制品放在这里。如果客户机正在从集群外部写入数据,则随机选择此节点。它是写入第一个复制副本的节点。
非机架数据节点:存在于另一机架上的数据节点。第二个复制品放在这里。
机架上数据节点:与第一个数据节点物理上位于同一机架上的数据节点。第三个复制品放在这里
因此,在您的情况下,当第一个副本写入机架2中时,它将是本地数据节点。机架1/机架3中的第二个副本[机架外数据节点]。第三个副本再次出现在机架2中[机架上数据节点]。