HDFS读文件流程

1.客户端向NameNode发送读文件请求,NameNode返回文件的数据块信息,对于每一个数据块,元数据节点返回保存数据块的数据节点的地址

2.文件系统返回FSDataInputStream给客户端,用来读取数据

3.FSDataInputStream连接保存次文件第一个数据块的最近的数据节点,data从数据节点读到客户端

4.当此数据块读取完毕是,FSDataInputStream关闭和此数据节点的连接,然后连接此文件下一个数据块的最近的数据节点

5.当客户端读取数据完毕后,关闭FSDataInputStream

6.在读取数据的过程中,如果客户端在与数据节点通信出现错误,则尝试连接包含此数据块的下一个数据节点

7.失败的数据节点将被记录,以后不再连接

HDFS写文件流程

1.客户端向NameNode发送写文件请求。

2.NameNode检查是否已存在文件,检查客户端是否有写权限。若通过检查,在名称空间中创建一个新的文件。

3.文件系统返回一个输出流对象(DFSOutputStream),客户端用于写数据。

4.客户端将NameNode返回的分配的可写的DataNode列表和Data数据一同发送给最近的第一个DataNode节点,第一个节点将数据块发送给第二个节点,第二个节点将数据块发送给第三个节点。

5.三个数据节点存储数据成功后会向客户端发送写入成功,客户端会通知NameNode写入完毕。