在Hadoop集群里面,所有的DataNode节点都是hdfs系统存储数据用,为了使存储数据和读取数据尽可能快,所以在网络拓扑里面两两节点之间都会建立联系,那么两个节点之间距离越近,则我们称为彼此近邻。那这个距离是怎么衡量的呢?其实hdfs系统在海量的数据处理中,主要的限制因素是节点之间数据的传输速度,而且主要原因是带宽问题,因此hdfs采用了将两个节点之间的带宽作为距离的衡量标准。
综上所述,节点距离就是两个节点到达最近的共同父节点之间的距离总和。
下面介绍下我们是如何标记每一个节点的。如下图:
咋我们再规划集群的时候,一般是这样的,假设数据中心d1的机架r1中的节点n1,那么标记这个节点的时候,我们就表示为:/d1/r1/n1,如上图,我们的节点标记的话就会有:
/d1/r1/n0 /d1/r1/n1 /d1/r1/n2 /d1/r2/n0 /d1/r2/n1 /d1/r2/n2 /d1/r3/n0 /d1/r3/n1 /d1/r3/n2 /d2/r4/n0 /d2/r4/n1 /d2/r4/n2 /d2/r5/n0 /d2/r5/n1 /d2/r5/n2 /d2/r6/n0 /d2/r6/n1 /d2/r6/n2
此时我们计算节点距离的话就是:
Distance(/d1/r1/n1, /d1/r1/n1)=0(同⼀节点上的进程) Distance(/d1/r1/n1, /d1/r1/n3)=2(同⼀机架上的不同节点) Distance(/d1/r1/n1, /d1/r3/n3)=4(同⼀数据中⼼不同机架上的节点) Distance(/d1/r1/n1, /d2/r4/n3)=6(不同数据中⼼的节点)
还没有评论,来说两句吧...