hdfs读数据流程

1,客户端通过Distributed FileSystem 向namenode请求下载文件,namenode 通过查找元数据,返回文件块所在datanode的地址。

2,客户端挑选一台datanode(按照就近原则,返回的块地址根据网络拓扑图排序,距离客户端进的排在前面)服务器,建立连接,请求读取数据;如果dn异常,则从第二优先的dn读取数据,并且标记该dn异常,后续读取块的数据直接跳过该dn。

3,datanode开始传输数据给客户端(从磁盘读取数据输入流,以packet为单位来做校验),如果块读取完毕,则关闭和datanode的连接。

4,客户端以packet为单位接收数据,先在本地缓存下来,然后写入目标文件。