1、hdfs写数据
1、客户端通过Hadoop文件系统相干API 发送要求。打开1个要写入的文件,如果该用户具有足够的权限,这1要求会被发送到NameNode,在NameNode上建立该文件的元数据。
2、刚建立的新文件元数据并未将该文件和任何数据块关联,客户端仅收到打开文件成功的响应。
3、客户端在API层面上将数据写入流中,数据被自动拆分成数据包,数据包保存在内存队列中。
4、客户端有1个独立的线程,它从队列中读取数据包,并同时向NameNode要求1组DataNode列表,以便写入下1个数据块的多个副本。
客户端直接连接到列表中的第1个DataNode,而该DataNode又连接到第2个DataNode,终究,客户端将剩余数据包全部写入磁盘,关闭数据流并通知NameNode文件写操作终了。全部进程中,DataNode将确认接收数据被成功写入,客户端保护着1个列表,记录了哪些数据包还没有收到消息,DataNode写满后,客户端重新向NameNode申请下1个DataNode。
如果在复制进程中,产生毛病,管道会立即关闭,已发出未收到确认的数据包会被回退到队列中。