Hadoop学习之HDFS读流程

本文详细介绍了HDFS中客户端如何读取文件的过程。通过调用DistributedFileSystem.open方法,客户端能够从NameNode获取文件块信息,并直接从DataNode读取数据。当一个块读取完成后,客户端会检查读取状态并选择下一个块进行读取。

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

HDFS读流程图
这里写图片描述

假设需要读取HDFS根目录下的bigdata.log文件,使用如下命令

hadoop fs -cat /bigdata.log

整个流程如下:

1、客户端会调用DistributedFileSystem.open方法与NameNode进行RCP通信,NameNode会返回该文件的部分或全部的 block列表(也包含该列表各block的分布在Datanode地址的列表),也就是返回FSDataInputStream对象

2、客户端调用FSDataInputStream对象的read()方法
a、会去与第一个块的最近的datanode进行read,读取完后,会check,假如successful,会关闭 与当前 Datanode通信;(假如check fail,会记录失败的块+Datanode信息,下次就不会读取;那么会去该块的第二个 Datanode地址读取)
b、 然后去第二个块的最近的Datanode上的进行读取,check后,会关闭与此datanode的通信。
c、 假如block列表读取完了,文件还未结束,那么FileSystem会从Namenode获取下一批的block的列表。

3、客户端将文件块读取完整后,会调用FSDataInputStream.close()方法,关闭输入流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值