HDFS读写流程详解及故障处理机制

本文详细解析了HDFS的写数据流程,包括总体步骤和故障处理机制,以及读数据流程,涵盖客户端与NameNode、DataNode的交互过程,确保数据的可靠存储和高效读取。在故障处理部分,解释了如何应对DataNode故障,保证数据完整性。
摘要由CSDN通过智能技术生成

HDFS写数据流程

总体流程:

  客户端通过对DistributedFileSystem对象调用create()来新建文件,DistributedFileSystem对NameNode创建一个RPC调用,在文件系统的命名空间中新建一个文件,此时该文件中还没有相应的数据块,NameNode执行各种不同的检查以确保这个文件不存在以及客户端有新建改文件的权限。
  如果这些检查均通过,NameNode就会为创建新文件记录一条记录,否则文件创建失败,并向客户端抛出一个IOException异常,DistributedFileySystem向客户端返回一个FSDataOutputStream对象。
  由此客户端可以开始写入数据,写入数据时,DFSOutputStream将它分成一个个的数据包(packet),并写入内部队列,称为"数据队列"。DataStreamer处理数据队列,它的责任是挑选出适合存储数据副本的一组DataNode,并要求NameNode分配数据块,这一组DataNode就构成了一个管线(假设副本数为3),即管线中有三个节点,DataStreamer将数据包流式传输到管线中第一个DataNode,该DataNode存储数据包并将它发送到管线中的第二个DataNode,同样,第二个再发给第三个。
  DFSOutputStream也维护这一个内部数据包队列来等待DataNode的收到确认回执,称为“确认队列”(ack queue)。收到管道中素有DataNode确认信息后,该数据包会从确认队列中删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值