【博学谷学习记录】超强总结,用心分享 | HDFS读写流程

发布时间 2023-06-01 10:15:52作者: 牛牛牛牛牛牛牛牛

【博学谷IT技术支持】

HDFS写流程

请添加图片描述

上图是HDFS的写流程图

主要步骤如下

  • client向服务器发起上传请求(RPC)
  • NameNode接受到请求之后会进行权限检查(目录是否存在权限,目录是否存在)
  • NameNode会给client反馈是否可以上传标记
  • Client会将要上传的文件安装设置的Block大小进行切片
  • Client向NameNode请求上传第一个Block
  • 当NameNode收到上传Block请求之后,会根据副本放置策略和主机的优秀程度选出最优主机
  • NameNode返回最优的主机列表给Client
  • Client和主机列表排在最前的主机建立pipeline
  • dataNode告诉应答成功
  • Client开始传输第一个Block数据,传输数据的单位是package(64K)
  • 收到一个package就会缓存datanodeDatas
  • HDFS会产生一个应答队列,从最后一个开始,收到packet,就会将一个ACK应答放入应答队列
  • Client判断应答队列的ACK是否完整,如果完整,则判断此次packet发送成功,继续发送第二个package
  • 当最后一个package发送完成之后,每一个DataNode会将缓存的Package数据存储到硬盘上,也就是一个Block
  • Client重新执行第五步,请求Namenode上传第二个block,
  • client向Namenode汇报文件上传完毕
  • NameNode更新自己内存中的元数据

写流程简单概况

  1. client向namenode发起上传请求,namenode判断权限等告诉client是否可以上传,并返回主机列表。
  2. client与主机建立pipeline,分别上传所有的block。
  3. 上传完毕汇报client,client告诉namenode更新自己内存中的元数组。

HDFS读流程

请添加图片描述

  • Client向服务端发起文件下载请求
  • 服务器做权限检查,判断文件是否存在以及权限问题
  • namenode获取该文件的block信息列表,并且对每一个block的主机进行排序(策略)
block1: node1 node3 node4
block2: node1 node2 node4
block3: node2 node3 node4
  • 将文件的block列表发送到client
block1: node1 node3 node4
block2: node1 node2 node4
block3: node2 node3 node4
  • client分别和三个block所在的主机建立管道通信
  • client分别从三台主机读取数据,读取是并行执行(读取的单位是packet,64k)
  • client将这三个block进行合并(字节数组的合并)

读流程简单概况

  1. 向namenode发起下载请求,namenode判断权限并返回主机列表
  2. client与主机列表建立pipeline并读取数据
  3. client对数据进行合并