HDFS的读写流程
HDFS写流程(上传流程)
- 需要的东西:要上传的文件、客户端Client、NameNode
- 首先,需要在客户端Client上创建一个分布式文件系统的对象(DistributedFileSystem),然后客户端申请向NameNode上传文件,NameNode会向客户端响应是否可以上传文件。(判断的标准:要申请的上传文件的目录不存在,且具有写权限)
- 紧接着,客户端会开一个HDFS的输出流叫做FSDataOutputStream,请求NameNode上传第一个文件块,然后NameNode会返回一个DataNode的列表(副本数)给客户端,告诉客户端可以上传的文件块的位置在哪里。
- 这时候,客户端采用就近原则,先与DN1建立TCP的通信通道(串行通道),紧接着和DN2、DN3建立通信通道,建立通道以后,会相应的给出应答。然后客户端就会以Packet(64KB)数据包的形式发送数据给DN1,DN1一边往磁盘缓存数据,一边同步数据到DN2、DN3中。
- 之后,会上传第二个文件块,与上述描述情况类似。
- 最后,当两个文件块的数据都上传完以后,客户端会告诉NameNode文件上传完毕,NameNode就更在元数据中更新一下元数据,整个HDFS写流程就完毕了。