HDFS写数据流

 

 #FSDataInputStream封装了DFSInputStream

大部分的HDFS程序对文件操作采用的是“一次写多次读取”的模式。

1.HDFS客户端先向DFSInputStream发起创建文件请求,创建输出流。DFSInputStream对想象中的Create()函数创建一个文件。

2.DistributedFileSystem输出流要执行RPC远程调用名称节点,让名称节点在文件系统空间中创建一个新文件。但名称节点不会直接创建一个新的文件,名称节点先要观察所要创建的文件是否已存在,还要观察所写文件是否有权限才能创建新文件。

3.名称节点反馈给客户端节点,HDFS向FSDataInputStream创建数据流写入数据。写入数据的方式是流水线复制,流水线复制就是把整个数据分成一个一个分包,这些分包分别放到DFSDataOutputStream这个对象的内部队列。DFSDataOutputStream向名称节点申请保存这些数据块的数据节点。

4.申请到后名称节点会告诉客户端节点应该把数据包写到哪些数据节点上。把要写入的数据节点排成队列,这些数据节点会形成一个数据流的管道。把刚才的分包在打包成分包成数据包把它发到整个数据流通道的第一个节点,第一个再把数据包发到第二个以此类推,形成流水线。

5.接收确认数据包不是各个节点直接发到客户端节点上的,而是写入数据包的最后一个数据节点发给前面的节点以此类推,到第一个节点把整个确认包发送给数据端节点。

6.关闭文件。

7.写操作完成。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

究极无敌暴龙兽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值