hdfs写入数据的流程

本文详细介绍了HDFS中数据写入的过程,包括客户端通过DistributedFileSystem调用create()创建文件,数据包的分解与存储,DataNode间的复制与确认,以及故障处理机制。还探讨了副本布局策略,旨在确保数据的可靠性和性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、客户端通过调用distributedFileSystem调用ceate()方法创建文件

2、distributedFileSystem对namenode创建一个PPC调用,去检查是否有这个文件,以及这个文件的权限,如果有这个文件,会返回IOException,如果没有就去创建这个文件。之后distributedFileSystem会返回给客户端DFSOutputStream对象,这个对象负责处理DataNode和namenode之间的通信。

3、客户端写入数据时,DFSOutputStream将这个数据分解成一个个的数据包,并写入内存数据队列中,称为“数据队列”

4、datastreamer来处理数据,是根据DataNode的大小来要求namenode分配DataNode适合的新内存来存储这些数据副本。首先将数据队列存储在第一DataNode中,之后一次存储在第二个DataNode中,然后再存储在第三个DataNode中。

5、等到DataNode存储完成之后,fileoutputstream等待DataNode去返回回执结果。等到DataNode将所有的结果都返回之后,该数据包才会从这个数据队列中删除。

6、客户端完成数据的写入后,调用close方法,该操作将所有的包写入DataNode管线。

7、distributedFileSystem等待确认信号,namenode已经知道文件由哪些块组成,所以他在返回前只需要等待数据块进行最小量的复制。

  1. 客户端通过在DistributedFileSystem中调用create()来创建文件。
  2. DistributedFileSystem 使用RPC去调用namenode,在文件系统的命名空间创一个新的文件,没有块与之相联系。namenode执行各种不同的检查以确保这个文件不会已经存在,并且在client有可以创建文件的适当的许可。如果检查通过,na
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值