HDFS读写流程

HDFS读流程:

1.HDFS Client调用FileSystem.open(filePath)

2.与NN进行【RPC】通信,返回该文件的block列表

将该列表返回 FSDataInputStream 对象

3.HDFS Client调用FileSystem.read方法

4.与第一个块最近的DN进行读取,读取完成后,检查是否OK

检查是否OK

如果OK,就回关闭与DN的通信

如果不OK,就会从第二个节点去读取,以此类推

5.当block列表全部读取完了

6.HDFS Client 调用FSDataInputStream.close

关闭数据流

 

HDFS写流程:

1.HDFS Client调用 FileSystem.create(filepath)方法

2.与NN进行【RPC】通信

NN会检查这个文件是否存在?是否有权限创建这个文件

如果都可,就创建一个文件,这个时候文件是没有数据的,也不关联block

NN会再根据文件的大小,块大小,副本数等

计算要上传多少的块和对应的DN节点

最终这个信息返回给给客户端的【FSDataOutputStream】对象

3.HDFS Client 调用客户端【FSDataOutputStream】的write方法

4.根据NN返回的信息,将第一个块的第一个副本写到DN1,

写完复制到DN2,再复制到DN3

5.当三个副本写完,DN3返回ack(确认字符)DN2

DN2接收到ack,返回ack给DN1

DN1接收到ack,返回ack给【FSDataOutputStream】

告诉它第一个块的三个副本写完了

以此类推

6.当所有的块全部写完,

HDFS Client 调用【FSDataOutputStream】的close方法

关闭数据流

7.然后调用FileSystem.complete方法,告诉NN文件写成功

自己画流程图的时候,画完发现自己InputStream和OutputStream还是画反了

读是6步,写是7步,读的步骤少Stream短,是Input,写的步骤多,Stream长,是Output

写的Stream比读的Stream多一个字母

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值