然后我们再来看一下,这个,hadoop的hdfs的机架感知,如何为某个上传的文件,这里如果是默认是,3个副本的话,
比如有1000台datanode,那么hadoop如何为这个3个副本选择合适的节点,存放呢?
可以去看看官网文档
这个部分
翻译一下
可以看到他的解释
假如默认是存放3个副本,那么hadoop的namenode节点会,这样为这3个副本选择存放的datanode节点.
1.首先会在这个当前集群找个机架,比如机架1
2.然后在这个机架上找个节点比如是n-0,来存一个副本
3.然后再在这个机架上随机找个节点,比如n-1,来存一个副本
4.然后为了避免上面那个机架1,整体的都挂掉了,他会在其他的机架上随机找个机架,比如机架2上找个节点,
比如机架2的随机一个节点上,比如n-1节点上存放一个副本
这样做的原因是,首先,这样距离短,可以看到,机架1的n-1到机架1的交换机是距离是1
机架1的n-0这个节点到机架1的交换机是距离是1
然后机架2的n-1这个节点,到机架2交换机的距离是1
所以机架1到集群d1交换机的距离是1,机架2到集群d1交换机的距离是1,
这个距离是4.
如果在机架1上选择一个节点,再在机架2上选择2个节点,这样距离就远了不合适了.
1.所以他根据距离考虑
2.他根据数据安全考虑.