HDFS- 写入文件
- 第1步客户端发去
CreeteFile
,目的时获取HDFS
文件的输出流,namenode
收到请求后会检测路径的合法性,以及权限。原生Hadoop的权限管理不是很完善,工作中用的是CDH(商业版Hadoop)如果检测通过,namenode
会为这个文件生成块的元数据信息(比如:1为文件切块2分配块id3分配每个块存在那个datanode
上),然后将原属信息封装到输出流中,返回给客户端。 - 第2,3步
Client
拿出输出流之后,采用PipeLine
(数据流管道)机制做数据的上传发送,这样设计的目的在于利用每台服务的带宽,最小化推送数据的延时。packet
是一个64Kb
大小的数据包,即客户端在发送文件块时,会在文件块变成一个一个的数据发送。 - 第4.5步- 每台
datanode
收到packet
,会向上游datanode
做ack
确认,如果接受失败,会进行重发 - 第6步 当一个文件上传完后,关流。