读流程
- client 请求 namenode 读取文件
- namenode 返回该文件对应的元数据信息, 包含 datanode 列表
- client 请求每个 block 对应的 datanode 使用 FSDataInputStream 下载文件
- 调用 close 关闭流
写流程
- client 请求 namenode 写文件
- namenode 返回允许写入
- client 本地分好 block, 请求 namenode 写入第一个 block
- namenode 返回分配的 datanode 列表
- client 就近原则连接最近的 datanode 建立管道, 并且 datanode 之间也是管道连接
- 传输单位是 package, 默认 64kb, 传输完单个 block 后, datanode 返回确认信息
- 关闭流
- 继续传输下个 block, 请求 namenode 返回 datanode 列表