HDFS采用的文件读取模式是“一个文件一旦创建,写入,关闭之后就不能修改”。保证了数据的一致性,并能够实现数据访问高吞吐量。
HDFS读数据流程具体如下:
- 客户端给namenode发起文件下载请求
- nameNode返回文件存储所在的datanode block块信息。
- 客户端根据拿到的block信息与距离最近的切片所在datanode建立通信通道,获取文件切片。
- Datanode将该节点上的切片信息传输给客户端。
- 如果没有获取到所有的切片信息,再与距离最近其他切片副本所在的datanode建立通信通道,获取该节点的切片。如此重复,直到获取到所有的切片信息。
- 客户端拿到所有切片后,将切片组装为完整的文件。
如下图