hdfs写操作的流程

先来一张图展示hdfs写操作的流程 hdfs dfs put  ../test.log /data/

步骤:

1.client通过rpc协议调用filesystem.create(path)方法与namenode通信,check path路径在hdfs中是否存在,有没有权限,如果有就创建一个文件,但是不关联任何的block,返回一个FSDataOutputStream对象。如果没有就返回错误。

2. client调用FSDataOutputStream对象的write方法,将第一个块写给DN1,当第一个块写完,DN1复制块到DN2,DN2在复制到DN3中。

3.当DN3写完后,返回一个ack package给DN2,DN2收到DN3的ack package后,返回ack package给DN1,当DN1收到ack后,返回ack给FSDataOutputStream对象,表示第一个块的三个副本写入完成。剩余的块依照上面的顺序依次写入hdfs中。

4.当文件写完后,client调用FSDataOutputStream对象的close方法,关闭输出流,flush刷新缓存区的数据包。

5.再调用filesystem.complete方法,告诉nn我们写完了。

猜你喜欢

转载自blog.csdn.net/u010506876/article/details/82994414
今日推荐