当对某个文件的某个block进行读取的时候,hadoop采取的策略也是一样:
1. 首先得到这个block所在的datanode的列表,有几个副本数该列表就有几个datanode。
2. 根据列表中datanode距离读取端的距离进行从小到大的排序:
a) 首先查找本地是否存在该block的副本,如果存在,则将本地datanode作为第一个读取该block的datanode
b) 然后查找本地的同一个rack下是否有保存了该block副本的datanode
c) 最后如果都没有找到,或者读取数据的node本身不是datanode节点,则返回datanode列表的一个随机顺序。
程序逻辑
对写副本时的选择datanoe选择逻辑代码如下:
对于hadoop写数据block副本的策略代码如下:
读取block时对block所在的datanode进行由近到远的排序程序逻辑如下:
Hadoop集群网络性能优化:Hadoop机架感知实现及配(2)
内容版权声明:除非注明,否则皆为本站原创文章。