一. 请简述 HDFS的数据写入流程
- 1.应用程序通过HDFS客户端向NameNode发起远程过程调用请求。
- 2.NameNode检查要创建的文件是否存在以及是否有足够的权限。
- 3.如果检测成功,NameNode会返回一个该文件的记录,否则让客户端抛
- 4.HDFS客户端把文件切分为若干个packets,然后向NameNode申请新的blocks存储新增数据。
- 5.NameNode返回用来存储副本的数据节点列表。
- 6.HDFS客户端把packets中的数据写入所有的副本中。
- 7.最后一个节点数据写入完成以后,客户端关闭。
二. 请简述 HDFS的数据读取流程
- 1.客户端发送读取文件请求给namenode
- 2.namdnode接收到请求,然后进行一系列校验,如果没有问题,就告知可以读取
- 3.就近挑选一台datanode服务器,开始读取文件对应的block块信息,放到内存缓冲区中
- 4.读取其他block块信息,直到所有block块读取完毕
- 5.最后从内存缓冲区把数据通过流写入到目标文件中
- 6.数据读取完成以后,HDFS客户端关闭与当前的datanode的链接。