HDFS读写流程
1.HDFS写流程
1)客户端发起写文件 /usr/ss.avi请求
客户端的DFS(distributed file system)向namenode发起写文件的请求,namenode需要检查目标文件是否存在,是否有权限,上层文件是否存在等。
2)namenode返回可以上传文件
3)客户端请求上传第一个块(block)
客户端按照块大小切分,请求上传第一个块,namenode将返回存储块的节点列表信息
4)namenode返回datenode信息,分别是dn1,dn2,dn3节点
5)客户端FSDataOutputStream与dn1建立block连接,dn1与dn2建立通讯连接,dn2与dn3建立通讯连接
6)dn1,dn2,dn3依次返回客户端响应
7)客户端读取block信息,缓存到本地,并且以package为最小单位进行传输,上传到dn1后,dn1传给dn2,dn2传给dn3
dn1每传完一个package会放入一个等待应对的队列
8)当第一个block上传完成后,会通知namenode,然后请求上传第二个块,重复步骤3-8
2.HDFS读流程
1)客户端发送读取文件/usr/ss.avi的请求
2)namenode返回元数据信息
3)就近原则,随机原则请求读取数据,并与dn1建立连接
4)读取文件,缓存到本地,并以package为单位上传给客户端,完成读取。
爱人不亲,反其仁;治人不治,反其智;礼人不答,反其敬;行有不得,反求诸己