(1) 客户端向hdfs上传文件,首先向NameNode请求上传文件,NameNode会做一些验证,比如检查目标文件是否已存在,父目录是否存在。当前的用户是否有些写权限。
(2) NameNode经过验证后,向客户端返回是否可以上传。
(3) 如果客户端收到可以上传的回复,则会向namenode请求第一个 block上传到哪几个datanode服务器上。
(4) NameNode返回客户端可用的3个datanode的节点地址,分别为datanode1、datanode2、datanode3。
(5) 客户端通过FSDataOutputStream模块请求datanode1上传数据,datanode1收到请求会继续调用datanode2,然后datanode2调用datanode3,将这个通信管道建立完成。
(6) datanode1、datanode2、datanode3逐级应答客户端。
(7) 客户端开始往datanode1上传第一个block,以packet(64kb)为单位,datanode1收到一个packet不仅会存储到本地磁盘还会将该packet复制一份传给datanode2,datanode2接收到之后,也会先存储到本地磁盘,然后datanode2将packet传给datanode3;
(8) 当一个block传输完成之后,客户端再次请求NameNode上传第二个block的服务器。(重复执行3-7步)。
hdfs的写数据流程
最新推荐文章于 2024-02-23 16:34:58 发布