HDFS 详细读写流程-面试总结

本文详细介绍了HDFS的读写流程。在写流程中,包括创建文件、建立数据流管道pipeline以及向管道写数据等步骤,涉及与NameNode和DataNode的交互,确保数据的正确传输和校验。读流程则涵盖了从DistributedFileSystem打开文件,获取Block位置信息,到逐个Block进行读取的过程。
摘要由CSDN通过智能技术生成

一、HDFS 写流程

创建文件

1).HDFS client向HDFS写入数据,先调用DistributedFileSystem.create()
2).RPC调用namenode(NameNodeRpcServer)的create()方法。会在HDFS目录树中指定的路径,添加新文件,并将操作记录在edits.log中。namenode.create()方法执行完后,返回一个FSDataOutputStream,它是DFSOutputStream的包装类。

建立数据流管道pipeline

3).client调用DFSOutputStream.write()写数据
4).DFSOutputStream通过RPC调用namenode的addBlock,向namenode申请一个空的数据块block
5).addBlock返回LocatedBlock对象:此对象中包含了当前blk要存储在哪三个datanode的信息,比如dn1,dn2,dn3
6).客户端,根据位置信息,建立数据流管道。

向数据流管道写当前块的数据

7).写数据时,先将数据写入一个检验块chunk中,写满512字节后,对此chunk计算校验和checksum值(4字节)
8).然后将chunk及对应校验和写入packet中&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值