HDFS读写流程:
HDFS读取数据的流程:
1. 客户端向namenode发送读取数据请求
2. 那namenode检查客户端权限, 根据客户端请求的数据信息,找到对应数据存在的datanode, 形成一个datanode列表
3. 返回一个block的datanode列表
4. 客户端和datanode建立pipeline, 就近原则(根据HDFS的网络拓扑, 减少磁盘IO压力)
5. 客户端开始读取数据, 读取数据的单位是 packet (64K)
6. 读取完毕,客户端通知namenode, 并关闭数据流
HDFS的写流程:
1. 客户端向namenode发送写入数据请求
2. namenode检查权限, 返回数据流对象
3. namenode找到能够写入的datanode(正常的datanode) , 返回给客户端
4. 客户端请求上传blk1,(整体数据被切分为n块)
5. 客户端与datanode建立pipeline , datanode之间也建立了pipeline
6. 开始传递数据, 单位为 packet
7. 各个datanode将数据缓存到本节点
8. 重复上传数据块,直至上传完毕, 最后datanode发送应带给客户端
9. 客户端通知namenode关闭数据流
学习阶段, 有不足之处请多指教!!!