概述
客户端要向 HDFS 写数据,首先要跟 namenode 通信以确认可以写文件并获得接收文件 block 的 datanode,然后,客户端按顺序将文件逐个 block 传递给相应 datanode,并由接收到 block 的 datanode 负责向其他 datanode 复制 block 的副本
1、 client 发写数据请求 2、 namenode 相应请求,然后做一系列校验,如果能上传该数据,则返回该文件的所有切 块应该被存在哪些 datanode 上的 datanodes 列表 blk-001:hadoop02 hadoop03 blk-002:hadoop03 hadoop04 3、 client 拿到 datanode 列表之后,开始传数据 4、 首先传第一块 blk-001,datanode 列表就是 hadoop02,hadoop03, client 就把 blk-001 传到 hadoop02 和 hadoop03 上 5、 ……… 用传第一个数据块同样的方式传其他的数据块 6、 当所有的数据块都传完之后,client 会给 namenode 返回一个状态信息,表示数据已全 部写入成功,或者是失败的信息 7、 namenode 接收到 client 返回的状态信息来判断当次写入数据的请求是否成功,如果成 功,就需要更新元数据信息