HDFS读写流程
读取流程
1、客户端请求上传文件
2、namenode检查是否存在,可以上传,
3、客户端请求第一个block块上传到datanode
4、namenode返回3个datanode节点,d1,d2,d3
5、客户端请求dn1调用数据,d1收到请求会继续调用d2,d2调用d3,将通信管道建立完成
6、随即d1,d2,d3逐级应答
7、客户端开始往d1上传第一个block
(先从磁盘读取数据放到一个本地内存缓存)
以packet单位 (128MB)
d1收到第一个packet传到d2,d2再传到d3上
d1每传一个packet会放入一个应答队列等待应答
8、当一个block传输完成之后,
客户端再次请求namenode上传到第二个
写入流程
1、客户端向namenode发送请求写入数据,
2、namenode通过secondarynamenode存储的元数据,去定位datanode
3、挑选一台datanode(就近原则,然后随机)服务器,请求读取数据。
4、数据读取完,发送给客户端,以packet(128MB)的形式存储
5、以本地缓存的方式,再写入目标文件