一、读取流程
· 1.客户端通过RPC(远程过程调用,特点:能够让客户端人员更加注重业务流程,而不是文件的发送)请求访问NameNode
NameNode查询元数据,获取到文件的存储路径,将文件的所对应全部或者部分(面对多个文件块)文件块的存储路径放入一个队列中再发送给客户端(NameNode给client返回的是内网IP,如果是自己的云主机,要去找对应的vpn,否则无法访问。)
2.客户端收到队列之后,一次遍历队列,读取文件块
3.客户端从队列中获取到第一个文件块的存储位置,从中选出一个最近的DataNode(客户端到机架的网络距离的远近:响应速度的快慢)来进行读取
4.读取完成之后校验文件块的大小是否符合,如果符合,则继续读取第二个文件块;如果不符合,通知NameNode当前文件块已经损坏,然后从其他节点重新读取当前的文件块
5.当客户端将这个文件块全部读取完成之后,会再次访问NameNode请求下一批文件块的地址
6.当客户端读取完所有的文件块之后,通知NameNode关闭文件
这种方式是为了提高NameNode的并发量
二、写入流程