HDFS的读写流程

HDFS的写入(上传)操作

  (1)客户端向NameNode发出上传文件请求

  (2)NameNode检查目标文件是否存在,父目录是否存在,然后响应客户端是否能上传

  (3)客户端根据规定的块大小拆分数据,然后向NameNode询问第一个block(数据块)上传到哪些DataNode上

  (4)NameNode返回多个DataNode节点(默认三个节点)

 

  (5)客户端通过FSDataOutputStream模块请求DataNode上传数据,第一个DataNode节点收到请求后向调用下一个DataNode节点,

     第二个节点再调用下一个节点。。。。将这个通信管道建立完成

  (6)所有数据节点依次应答客户端

  (7)客户端开始往第一台数据节点上传第一个block,以Packet为单位,第一台数据节点收到后复制一份传给第二个数据节点,依次往后传,直到所有

    数据节点都拿到block。第一台数据节点每传一个packet会放在一个应答队列等待应答。

  (8)当一个数据块上传完成后,客户端向NameNode请求上传第二个数据块。重复3-8步骤。

 

HDFS的读数据流程

  (1)客户端通过Distributed FileSystem 向NameNode请求下载文件,NameNode通过查询元数据,找到文件酷爱所在的所有DataNode地址

  (2)通过就近原则挑选一台DataNode服务器,请求读取数据。

  (3)DataNode开始传输数据给客户端(从磁盘里面读取数据输入流,以Packet为单位来做校验)

  (4)客户端以Packet为单位接受,先在本地缓存,然后写入目标文件。

 

posted @ 2020-03-14 17:06  拔丝小红薯  阅读(160)  评论(0编辑  收藏  举报