hdfs读写流程

hdfs读流程

HDFS文件读流程:
HDFS运行原理(通俗易懂)

客户端读取数据的过程如下:

(1)使用HDFS提供的客户端向远程的NameNode发起RPC请求。
(2)NameNode会视情况返回文件的部分或者全部块列表,对于每个块,NameNode都会返回副本的DataNode地址。
(3)客户端会选择离其最近的DataNode来读取块,如果客户端本身就是DataNode,那么将从本地直接获取数据。
(4)读取完当前块数据后,关闭当前的DataNode连接,并为读取下一个块寻找最佳的DataNode。每读取完一个块都会进行checksum验证,如果读取DataNode时出现错误,客户端会通知NameNode,再从下一个拥有该副本的DataNode继续读取。
(5)当读取完块列表后,并且文件读取还没有结束,客户端会继续向NameNode获取下一批块列表。
(6)一旦客户端完成读取操作后,就会调用close方法来完成资源的关闭操作。

hdfs写流程

HDFS文件写流程:
HDFS运行原理(通俗易懂)
客户端写数据的过程如下:

(1)使用HDFS提供的客户端向远程的NameNode发起RPC请求。NameNode会检查创建的文件是否已经存在,创建者是否有权限进行操作,成功则为文件创建一个记录,否则会让客户端抛出异常。
(2)开始写文件时,客户端会将文件切分成多个packets(数据包),并向NameNode申请块,获取用来存储副本的合适的DataNode列表。
(3)客户端调用FSDataOutputStream API的write方法,首先将其中一个块写到DataNode上,每一个块默认都有3个副本,并不是由客户端分别往3个DataNode上写3份数据,而是由已经上传了块的DataNode产生新的线程,由这个DataNode按照副本规则往其他DataNode写副本。
(4)FSDataOutputStream内部维护着一个确认队列,当接收到所有DataNode确认写完的消息后,数据才会从确认队列中删除。
(5)客户端完成数据的写入后,会对数据流调用close方法来关闭相关资源。

ps:上文即为本人对hdfs的读写流程的理解,有不足之处请指出。
ps:望多多支持,后续更新中。。。

相关文章:

  • 2021-05-05
  • 2021-12-28
  • 2021-04-09
  • 2021-08-10
  • 2021-11-17
  • 2020-02-28
  • 2021-07-06
猜你喜欢
  • 2021-07-19
  • 2021-10-15
  • 2021-09-20
  • 2021-07-25
  • 2021-06-26
  • 2021-04-14
  • 2022-01-01
相关资源
相似解决方案