HDFS写入过程

输入图片说明

1.Client调用DistributedFileSystem对象的create方法,创建一个文件输出流(FSDataOutputStream)对象。

2.通过DistributedFileSystem对象与Hadoop集群的NameNode进行一次RPC远程调用,在HDFS的Namespace中创建一个文件条目(Entry),该条目没有任何的Block。

3.通过FSDataOutputStream对象,向DataNode写入数据,数据首先被写入FSDataOutputStream对象内部的Buffer中,然后数据被分割成一个个Packet数据包。

4.以Packet最小单位,基于Socket连接发送到按特定算法选择的HDFS集群中一组DataNode(正常是3个,可能大于等于1)中的一个节点上,在这组DataNode组成的Pipeline上依次传输Packet。

5.这组DataNode组成的Pipeline反方向上,发送ack,最终由Pipeline中第一个DataNode节点将Pipeline ack发送给Client。

6.完成向文件写入数据,Client在文件输出流(FSDataOutputStream)对象上调用close方法,关闭流。

7.调用DistributedFileSystem对象的complete方法,通知NameNode文件写入成功。

猜你喜欢

转载自my.oschina.net/134596/blog/1641263