1.与NameNode通讯请求上传文件,NameNode检查目标文件是否已经存在,父目录是否已经存在
2.NameNode返回是否可以上传
3.Client先对文件进行切分,请求第一个block该传输到哪些DateNode服务器上
4.NameNode返回3个Datenode1,Datenode2,Datenode3
5.Client请求3台中的一台Datenode1上传数据,Datenode1收到请求会继续调用Datenode2,然后Datenode2调用Datenode3,将整个pipeline建立完成,然后逐渐返回客户端
6.Client开始往Datenode1上传第一个block,以pocket为单位。写入的时候Datenode会进行数据校检而是以chunk为单位进行校检。Datenode1收到一个packet就会传给Datenode2,Datenode2传给Datenode3,Datenode1每传一个pocket会放入一个应答队列等待应答
7.当一个block传输完成之后,Client再次请求NameNode上传第二个blockde 服务器