一、HDFS写数据流程
(1)、客户端向namenode请求上传文件
(2)、namenode对请求进行合法检测(权限,路径是否合法,路径是否存在)
(3)、如果合法,namenode响应客户端允许上传
(4)、客户端根据自己自己设置的block大小,切分block。客户端请求上传第一个block,并请求namenode分配datanode的地址列表
(5)、namenode返回用于存储的datanode节点信息
(6)、客户端通过就近原则选取一个datanode节点,并发起建立传输通道的请求,当这个通道建立之后,这个datanode会去与第二个datanode建立通道,第二个与第三个建立通道……
(7)、所有的datanode依次应答客户端
(8)、客户端先传输第一个block(先从磁盘中取出放入内存中缓存),用packet传输,datanode节点收到一个packet后就会传输给下一个datanode节点,并将packet放入等待应答队列中等待应答
(9)、传输万第一个block后客户端继续请求传输第二个block
二、HDFS读数据的流程
(1)、客户端向namenod请求下载文件
(2)、namenode通过查询数据块的元数据信息找到datanode的地址
(3)、客户端按照就近原则挑选一台datanode所在的服务器(之后随机),请求读取数据。
(4)、datanode开始以packet传输数据
(5)、客户端接收到packet后先放本地缓存,最后写入目标文件