HDFS文件写入过程

HDFS写入过程中各组件发生了什么事?

HDFS有什么组件:

  • Client

  • NameNode(NN)

  • DataNode(DN)

名词解释:

  • block: HDFS的存储单元,默认128M

  • pipeline:Client和DataNode之间用来传输数据建立的管道

  • packet:属于pipeline管道传递的单位(64K)

上传过程:

image

1.Client 向 NN 发起上传请求,例如上传a.txt文件,a.txt分成3个block(Client 发起)

2.NN检测Client的上传权限和文件是否存在等(NN内部处理)

3.NN检查无误,发送可以上传通知到client(NN发起)

4.client开始上传a.txt文件,申请block1的上传(client发起))

5.根据集群中dn的容量、block信息和机架感知,选出可以上传存储的3个主机(根据3个副本来决定)(NN内部)

6.NN向client返回选出的DN列表(NN发起)

7.client向DN建立pipeline(管道),由client到DN-A,DN-A到DN-B,DN-B到DN-C(client发起,管道打通3个DN)

8.client开始向DN传递数据,每次传递的单位是packet(64K)

9.DN将每次接受到packet进行缓存,继续传递到下一个DN

10.DN接收block1数据完毕后向上发送应答ack到client,表示上传完毕

11.client 重复步骤4,直到所有的block块上传完毕,整个文件的上传就完成了


PS : HDFS文件写入和文件读取的最大区别在于写入的pipeline(管道)是一条类似串联的管道,而文件读取是可以多条管道同时读取,有一个并发的概念

posted @ 2021-08-02 22:42  没离开过o  阅读(239)  评论(0)    收藏  举报