1.上传文件内部执行原理图
1.1.下面且听我来聊HDFS上传文件
- 1:首先有个文件,叫1.txt,假如这个文件300MB。
- 2:客户端要上传这个1.txt,会先找HDFS的老大NameNode,发起上传请求。
- 3:NameNode会检查一下这个请求是的权限是否合法,检查一下父目录是否存在,是否有重名文件,如果检查不通过,直接失败。检查通过看下面的步骤。
- 4:HDFS的老大NameNode传话给Client,请求被允许,可以上传文件。
- 5:Client对文件进行拆分后,开始上传第一个block
- 6:NameNode根据副本放置策略来得到三台合适的DataNode
- 7:NameNode将DataNode的主机列表返回给Client
- 8:Client和DataNode1,DataNode2,DataNode3之间建立起管道pipeline。
- 9:Client发送数据,以packet为单位,每个packe为64k。
- 10:DataNode(1,2,3)没收到一个packet就缓存起来,然后继续往下传递packet。
- 11:DataNode每收到一个packet,给出一个ACK应答,并存入应答队列
- 12:当发送完一个Block之后,DataNode会把数据存入硬盘
- 13:其他block同理
2.读取文件内部执行原理图
2.1.下面且听我来聊HDFS读取文件
- 1:client向NameNode发起读取请求。
- 2:NameNode对请求进行权限检查,检查是否具有操作权限,检查文件是否存在。
- 3:NameNode返回下载文件的Block列表。
- 4:向客户端返回block列表,并对每个副本所在的主机进行排序。
- 5:根据实际情况,挑选出每个block读取的最优主机。
- 6:client和各个存放block的DataNode主机建立pipeline管道。
- 7:同时从多个DataNode读取数据(并行读取)
- 8:将多个block整合成一个完整的文件。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END