HDFS写数据流程
- 客户端通过DistributedFileSystem向NameNode请求上传文件,NameNode检查目标文件是否已经存在,父目录是否存在。
- NameNode通过验证后,向客户端返回是否可以上传。
- 如果客户端收到可以上传的回复,则会向NaneNode请求第一个block上传到哪几个datanode服务器上。
- namenode返回客户端可用的三个datanode的节点地址,分别为datanode1,datanode2,datanode3。
- 客户端请求datanode1上传数据,datanode1收到请求会继续调用datanode2,然后datanode2调用datanode3,将通信管道完成。
- datanode1,datanode2,datanode3逐级应答客户端。
- 客户端向datanode1上传第一个block,以Packet 为单位,datanode1收到一个Packet就会传给datanode2,datanode3;datanode1每传一个Packet会放入一个应答队列等待应答。
- 当一个block传输完成之后,客户端再次请求namenode上传第二个block的服务器。