开发者社区> 问答> 正文

HDFS如何写文件?

HDFS如何写文件?

展开
收起
芯在这 2021-12-05 19:41:39 274 0
1 条回答
写回答
取消 提交回答
  • (1)客户端通过在DistributedFileSystem中调用create()来创建文件。

    (2)DistributedFileSystem 使用RPC去调用namenode,在HDFS命名空间创一个新的文件。HDFS返回一个文件系统数据输出流FSDataOutputStream,让client开始写入数据。 FSDataOutputStream控制一个DFSOutputStream,负责处理datanode和namenode之间的通信。

    (3)client写入数据时,DFSOutputStream将文件切分一个个的Block,对于每个block有分成一个个数据包写入数据队列。数据队列在数据节点管线中流动。

    (4)对于任意一个数据包,首先写入管线中第一个的datanode,第一个节点会存储包并且发送给管线中的第二个datanode。同样地,第二个datanode存储包并且传给管线中的第三个数据节点。与此同时,client会将当前block的下一个包发给第一个datanode。

    (5)DFSOutputStream也有一个内部的包队列来等待datanode收到确认。一个Block只有其所有的包在被管线中所有的节点确认后才会被移除出确认队列。

    (6)client完成数据的写入后,就会在流中调用close()。

    (7)向namenode节点发生写文件已经完成的消息。与此同步的,datanode主动向namenode汇报所存储文件块的位置信息

    2021-12-05 19:41:52
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
海量数据分布式存储——Apache HDFS之最新进展 立即下载
HBase源码解析 立即下载
HDFS optimization for HBase at XiaoMi 立即下载