hadoop3.x HDFS写数据流程(废弃) 作者:马育民 • 2021-02-14 22:19 • 阅读:10059 [![](https://www.malaoshi.top/upload/pic/hadoop/QQ20210214213457.png)](https://www.malaoshi.top/upload/pic/hadoop/QQ20210214213457.png) 1. client通过 `FileSystem.create()` 向 NameNode 请求上传文件,NameNode **检查文件是否存在**、**父目录是否存在**、**是否拥有创建权限等** 2. NameNode 返回是否可以上传 3. client请求 **第一个 block** 该传输到 哪些 datanode 服务器上 4. NameNode 返回 3个DataNode节点:dn1、dn2、dn3 5. client 通过 `FSDataOutputStream.write()` 请求 **最近** 的 dn1 并上传数据,dn1 收到请求会继续调用 dn2,然后 dn2 调用 dn3 6. 整个通道建立完成,逐级应到客户端 7. client向 dn1 **上传 第一个block**(以 **packet** 为单位),dn1 收到一个packet就会传给 dn2,dn2 传给 dn3 7. 当一个 block 传输完成之后,**client再次请求 NameNode 上传第二个block**,重复执行3-7步,直到数据全部写完,客户端调用`close()` 方法 原文出处:http://malaoshi.top/show_1IXamwKj5Db.html