client通过
FileSystem.create()向 NameNode 请求上传文件,NameNode 检查文件是否存在、父目录是否存在、是否拥有创建权限等NameNode 返回是否可以上传
client请求 第一个 block 该传输到 哪些 datanode 服务器上
NameNode 返回 3个DataNode节点:dn1、dn2、dn3
client 通过
FSDataOutputStream.write()请求 最近 的 dn1 并上传数据,dn1 收到请求会继续调用 dn2,然后 dn2 调用 dn3整个通道建立完成,逐级应到客户端
client向 dn1 上传 第一个block(以 packet 为单位),dn1 收到一个packet就会传给 dn2,dn2 传给 dn3
当一个 block 传输完成之后,client再次请求 NameNode 上传第二个block,重复执行3-7步,直到数据全部写完,客户端调用
close()方法
