HDFS文件上传与下载原理

HDFS上传文件

1客户端向HDFS(NameNode)文件系统发送文件上传请求。
2.NameNode检索HDFS文件系统是否存在与要上传文件相同的文件,如果存在,阻止该文件上传;如果不存在,允许该文件上传。
3.客户端上传文件,NameNode会找出空闲的DataNode节点存储文件(默认备份为3份,所以NameNode会找出3个空闲的DataNode节点),NameNode的存储策略,本地存储一份,同一机架其他某与节点存储一份,不同机架其他某节点存储一份。
4.NameNode会将找出的空闲DataNode的地址反馈给客户端(反馈DataNode的地址会按照网络拓扑距离来排序,离客户端近的排在前面)。
5.客户端得到地址后,会按照网络拓扑距离的远近依次创建管道(管道:客户端——>DataNode1——>DataNode2——>DataNode3),管道创建好后,通知客户端开始传输数据。
6.客户端会根据上传文件的大小,分块传输;并且每块在传输时,以packet(64KB)为单位发送数据。
7.各DataNode在存储数据时,会反向(与管道方向相反)逐个发送ack(校验)至客户端。

HDFS文件下载

1.客户端向HDFS(NameNode)文件系统发送文件下载请求。
2.NameNode检索HDFS文件系统是否存在要下载的文件,如果存在,NameNode会将该文件的所以元数据反馈给客户端;如果不存在,不允许客户端下载该文件(提示客户端该文件不存在)。
3.客户端在获取元数据后,会与对应的DataNode创建线程(线程:客户端——>DataNode1,客户端——>DataNode2,客户端——>DataNode3),创建好线程后,开始下载数据。
4.客户端在下载完数据后,会将文件块进行合并,恢复成一个完整的文件。

猜你喜欢

转载自blog.csdn.net/weixin_38613375/article/details/89228650