一、读取流程
上图的详细过程:
1、HDFS提供的客户端开发库Client,通过RPC访问NameNode,发送读操作。
2、NameNode通过查询元数据,获取到文件的存储路径,将文件对应的全部(文件较小)或者文件的部分(文件较大)的存储路径放到一个队列中,发送给客户端。
3、客户端收到队列,依次遍历队列,读取文件块的信息
4、客户端从队列中获取到第一个文件块的存储位置,从中选出一个最近的DataNode来进行读取。
5、读完第一块之后校验文件块的大小是否符合,如果符合,继续读取第二个文件块;如果不符合,表明文件有损坏,去其他DataNode重新读取,同时通过心跳机制告知NameNode。发送完后面的每一块都会校验。
6、读取完这批次的文件块,在此访问NameNode,获取下一批数据。
7、直到所有的文件块都读完,客户端会通知NameNode关闭文件。
二、写入流程
1、HDFS提供的客户端开发库Client,向远程的NameNode发起RPC请求写入操作。
2、NameNode会检查要创建的文件是否已经存在,创建者是否有权限进行操作(用户也有不同的权限),成功则会