1.客户端首先通过分布式文件系统创建一个文件,并以名称节点中来创建命名空间新文件。
2.名称节点通过多种的验证来请求客户端创建文件,创建成功时分布式文件系统将返回文件系统数据流给客户端写数据。这时产生的数据流对象将被客户端用来处理数据节点和名称节点间的通信。
3.客户端将会调用文件系统数据输出流的Write()函数,向对应文件写入数据。
4.当客户端写入数据时,文件系统输出流会将文件分割成包,然后放入“数据队列”中。数据流系统将会将这些小文件放入数据流中,并请求数据节点把分割包分配并存放副本。这时将会有三个副本形成一个“管道”,以一二三的顺序依次推送来重复操作,直到完成最后一个数据节点。
5.文件系统数据输出流同时会保存一个包的内部队列,用来等待“管道”中的数据节点返回确认信息,这个队列被称为“确认队列”。
6.当数据写入成功的操作后,将会调用文件系统数据输出流的Close()方法,将数据写入数据道管道中的数据节点,并等待确认返回成功,最后完成写入。