a、client跟NameNode通信请求上传文件,NameNode检查目标文件是否存在以及client是否有新建此文件的权限.
b、若通过检查,NameNode就会为创建一条记录,记录该新建文件的信息.若未通过检查就会抛出异常.
c、然后NameNode向客户端返回可以新建文件的信息以及相应的一组datanode,Client就近原则请求3台中的一台DataNode 1上传数据(本质上是一个RPC调用,建立pipeline)DataNode 1收到请求会继续调用DataNode 2,然后DataNode 2调用DataNode 3,将整个pipeline(管线)建立完成,然后逐级返回客户端。
d、Client将文件分成一个个数据包写入到数据队列中,往DN1上传第一个块,以数据包为单位.DN1收到一个数据包就会传给DN2,DN2传给DN3。
e、当DN 3写完最后一个pocket时,就会返回确认消息给DN2,DN2返回确认消息给DN1,然后返回给客户端,最后由客户端返回给namenode.
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。