Hadoop学习之HDFS读写流程

向HDFS写数据流程:


1)client向NameNode发起写数据请求;

2)NameNode检查文件是否存在,client是否有写入权限,成功会为向client返回一个通过的信息,失败会让client抛出异常;

3)开始写文件,客户端会将文件切分成多个packets,并以数据队列”data queue”的形式管理,然后向NameNode申请blocks信息,获取DataNode列表;

4)以pipeline的形式将packets写入DataNode中;

5)最后一个DataNode写入成功后会返回一个”ack packet”至client,client中会维护着”ack queue”(确认队列),成功收到返回后,会从”ack queue”中删除相应的”ack packet”;

6)如果传输过程中某个DataNode出现故障,pipeline会将该DataNode移除,剩下的DataNode会继续以pipeline形式传输,NameNode会分配一个新的DataNode保证副本数;

7)所有数据块都传完后,client会给NameNode返回一个状态信息,表示写入成功或失败;

8)NameNode根据成功的状态信息更新元数据。



从HDFS读取数据流程:


1)client向NameNode发起读数据请求;

2)NameNode进行权限验证,检查文件存不存在,如果存在向client返回block列表,带有block所有副本的DataNode地址信息;

3)client从列表中选取最近的一台DataNode发送下载请求;

4)一个block读取完毕后以同样的方式读取下一个block,直到所有的block都读取完毕;

5)读的过程中会先将数据写入内存的一个环形缓冲池中,默认大小100M,达到阈值后(默认缓冲池大小的80%)会将数据溢出到磁盘。环形缓冲池的作用:使输入输出并行工作,提高效率。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值