先看图
通过物理距离返回排序列表
HDFS客户端要读取数据首先必须和nameNode 建立连接,获取dataNode信息。
nameNode会根据客户端的物理地址返回一个由近到远的块地址列表。
客户端拿到列表后和最近的进行连接读取数据
注意点
HDFS中块是由一个完整的文件分成多个块,而每个块可能保存在不同机架上。
每个块中除了数据还保存了所在文件的偏移量。
所以读取到不同的块后可以再组成一个完整的文件。
数据可靠性
如何判断块是可靠的?
每个块都由一个通过计算得到的code,这是在写入的时候就计算好的。读取后根据这个块还会计算一遍,如果2者相同则表示可靠,否则表示异常。
客户端会再去其他dataNode中读取一遍