一、写数据流程
1、client 向NameNode请求上传文件
2、NameNode检查client是否拥有上穿文件的权限,同时检查目录是否正确,文件是否已经存在。
3、NameNode向client相应可以上传文件。
4、clint请求上传第一个Block(0-128M),请求返回DataNode
5、NameNode返回三个DataNode节点给clint(有些返回本地节点)
6、client通过就近原则,以及考虑负载均衡,选择其中一个DataNode节点,请求建立Block传输通道。
7、被选中的DataNode节点向client返回一个建立成功的应答
8、被选中的节点向另外两个DataNode节点中的其中一个(这里就叫它2号节点)建立连接,然后2号节点给前一个节点返回一个应答
9、2号节点再向第三个节点请求建立连接,第三个节点同样给2号节点返回应答
10、数据开始传输 Packet(64k)
二、读数据流程
1、client向NameNode请求下载某文件
2、NameNode检查client是否有权限访问,检查是否存在该文件
3、NameNode返回目标文件的元数据给client
4、根据元数据找到对应的DataNode,同时,根据就近原则和考虑负载均衡,选择合适的节点下载数据(串行下载,下载完一个Block之后才能下载下一个Block)



