HDFS写数据流程
文件的大小为200M,HDFS的一块存放的数据大小默认为120M】,需要存放在2个数据块中,首先上传第一个数据块。
1客户端通过DistributedFileSystem向NameNode发送请求,上传user/xty/1.txt文件。NameNode检测节点是否存在,父目录是否存在。
2.NameNode发送响应,可以上传文件。
3.客户端发送请求,上传第一block(大小为0-128M)
4.NameNode返回可以执行的数据节点(1,2,3),代表这些数据节点可用。
5.客户端通过FSDataOutputStream模块向dn1请求上传数据 ,dn1会相继请求调用dn2,dn2请求调用dn3
6.dn3,dn2,dn1相继回应客户端
7.客户端开始向dn1传输第一个block,以Packet为单位,dn1收到后就会传给dn2,dn2给dn3备份。dn1每传⼀个packet会放⼊⼀个应答队列等待应答。
8.当⼀个Block传输完成之后,客⼾端再次请求NameNode上传第⼆个Block的服务器。 (重复执⾏3-7步)。
读数据流程
默认块大小为128M,200M存放在两个块中。
1.客户端通过DistributedFileSystem向NameNode发送请求下载文件,NameNode通过查询元数据,找到dataNode所在地址。
2.返回元数据给客户端。
3.挑选一台DataNode(就近原则,然后随机)服务器,请求读取数据。
4.客户端以Packet为单位接收,先在本地缓存,然后写入目标文件。