Hadoop - 对hdfs文件读写流程分析
一. 读数据
1.1 读数据流程分析图
![](https://cdn.nlark.com/yuque/0/2020/png/654842/1581945701577-113ba783-71ec-4968-9a05-8e586a43da4a.png)
1.2 读数据步骤
1.2.1 请求阶段
- HDFS客户端向NameNode请求读取 路径为/hdfs/data/a.txt的文件
- NameNode 根据请求路径查询该文件是否存在, 若存在返回其对应的元数据信息
1.2.2 读取阶段
- HDFS客户端根据返回的元数据信息去DataNode请求读取对应的block
- DataNode查询是否有该block , 如果有则将block的数据返回
二. 写数据
1.1 写数据流程分析图
1.2 写数据步骤
1.2.1 请求阶段
- 向NameNode申请上传 文件 a.txt 到 /hdfs/data/ 目录
- NameNode接收到请求后向元数据查询该文件是否已经存在在该目录下, 如果不存在则响应可以上传文件
- HDFS客户端上传第一个 Block块, 请求返回存储Block的DataNode信息,
- NameNode 查询可用的DataNode, 如果有可用的DataNode, 将DataNode的信息返回 例如 : 返回DN01. DN02, DN03 这三个节点, 表示用这三个节点存储数据
1.2.2 传输阶段
- HDFS客户端会向第一个DataNode请求建立数据传输道,然后再逐层申请向对应的DataNode申请建立数据传输通道
- 数据传输通道建立成功后, 会逐层返回响应成功的信息
- HDFS客户端开始传输数据, 数据是以数据包的形式传输, 先传输道第一个DataNode上, 然后再由第一个DataNode分发到其他DataNode节点
- 传输完成后,客户端会向NameNode发送数据传输完成的信息