专业的IT培训机构|腾科IT教育集团
复制成功
微信号:togogoi
添加微信好友, 详细了解课程
已复制成功,如果自动跳转微信失败,请前往微信添加好友
打开微信
图片

腾科新闻

HDFS如何写数据

发布时间: 2022-11-24

HDFS如何写数据,如图1所示,HDFS进行写数据描述如下。



图1 HDFS写数据流程图

(1)客户端通过调用DistributedFileSystem的Create方法,创建一个新的文件。

(2)DistributedFileSystem通过RPC(远程过程调用)调用NameNode,去创建一个没有Blocks关联的新文件。创建前,NameNode会做各种校验,如文件是否存在,客户端有无权限去创建等。如果校验通过,NameNode就会记录下新文件,否则就会抛出lO异常。

(3)前两步结束后会返回FSDataOutputStream的对象,和读文件的时候相似,FSDataOutputStream被封装成DFSOutputStream, DFSOutputStream可以协调NameNode和DataNode。客户端开始写数据到DFSOutputStream,DFSOutputStream会把数据切成一个个小Packet,然后排成队列Data Queue。

(4)DataStreamer会去处理接受Data Queue,它先问询NameNode这个新的Block最适合存储在哪几个DataNode里,如重复数是3,那么就找到3个最适合的DataNode,把它们排成一个Pipeline。DataStreamer把Packet按队列输出到Pipeline的第一个DataNode中,第一个DataNode又把Packet输出到第二个DataNode中,以此类推。

(5)DFSOutputStream还有一个队列叫Ack Queue,也由Packet组成,等待DataNode收到响应,当Pipeline中的所有DataNode都表示已经收到的时候,这时才会把对应的Packet包移除掉。

(6)客户端完成写数据后,调用Close方法关闭写入流。

(7)DataStreamer把剩余的包都刷到Pipeline里,然后等待Ack信息,收到最后一个Ack后,通知DataNode把文件标示为已完成。

上一篇: 存在XSS攻击风险的功能点

下一篇: linux磁盘分区

在线咨询 ×

您好,请问有什么可以帮您?我们将竭诚提供最优质服务!