一. 读数据

1.1 读数据流程分析图

HDFS读 (Alternate 465m).png

1.2 读数据步骤

1.2.1 请求阶段

  1. HDFS客户端向NameNode请求读取 路径为/hdfs/data/a.txt的文件
  2. NameNode 根据请求路径查询该文件是否存在, 若存在返回其对应的元数据信息

    1.2.2 读取阶段

  3. HDFS客户端根据返回的元数据信息去DataNode请求读取对应的block

  4. DataNode查询是否有该block , 如果有则将block的数据返回

二. 写数据

1.1 写数据流程分析图

HDFS写数据流程 (Alternate 465m).png

1.2 写数据步骤

1.2.1 请求阶段

  1. 向NameNode申请上传 文件 a.txt 到 /hdfs/data/ 目录
  2. NameNode接收到请求后向元数据查询该文件是否已经存在在该目录下, 如果不存在则响应可以上传文件
  3. HDFS客户端上传第一个 Block块, 请求返回存储Block的DataNode信息,
  4. NameNode 查询可用的DataNode, 如果有可用的DataNode, 将DataNode的信息返回 例如 : 返回DN01. DN02, DN03 这三个节点, 表示用这三个节点存储数据

1.2.2 传输阶段

  1. HDFS客户端会向第一个DataNode请求建立数据传输道,然后再逐层申请向对应的DataNode申请建立数据传输通道
  2. 数据传输通道建立成功后, 会逐层返回响应成功的信息
  3. HDFS客户端开始传输数据, 数据是以数据包的形式传输, 先传输道第一个DataNode上, 然后再由第一个DataNode分发到其他DataNode节点
  4. 传输完成后,客户端会向NameNode发送数据传输完成的信息

对hdfs文件读写流程分析.pdf