1、客户端向NameNode发出写文件请求。检查是否已存在文件、检查权限。若通过检查,直接先将操作写入EditLog,并返回输出流对象。
2、client端按128MB的块切分文件。client将NameNode返回的分配的可写的DataNode列表和Data数据一同发送给最近的第一个DataNode节点,此后client端和NameNode分配的多个DataNode构成pipeline管道,client端向输出流对象中写数据。client每向第一个DataNode写入一个packet,这个packet便会直接在pipeline里传给第二个、第三个…DataNode。
3、每个DataNode写完一个块后,会返回确认信息。
考驾照网【KaoJiaZhao.COM】
4、写完数据,关闭输输出流。发送完成信号给NameNode。