HDFS-文件数据流读取传输协议

 

DFSClient从Namenode取得需要读取的文件对应的LocatedBlocks信息以后,就会按照block的顺序与datanode建立链接并发送读取block数据的请求。我们看一下这部分的协议格式:

4字节

数据传输协议版本号(0.19.1版本的hadoop这个字段为14)

4字节

操作码(读取文件时为:OP_READ_BLOCK,对应81

8字节

Block的BLOCKID字段

8字节

Block的时间戳字段

8字节

读取在block数据文件开始的偏移量

8字节

一共读取多少字节

Text

Client名称字串,格式为字串长度(这个采取了压缩形式)+字串内容

DFSClient发送读取数据块儿请求完成以后,首先等待datanode的应答,datanode应答协议格式如下:

4字节

OP_STATUS_SUCCESS=0表示链接建立成功OP_STATUS_ERROR=1表示链接建立失败

接下来Datanode就开始进行数据传送,具体数据格式如下:

数据校验相关信息

Byte

Chunksum类型

int

bytesPerChecksum每次checksum对应的字节数

8字节

这8字节有些情况是没有的

Offset(读取一个block开始的偏移量)

1.DFSClient从Datanode读取block数据时,这个字段是必须有的。

2.Datanode之间进行block互相拷贝时(balance需要,或者block块儿没有达到副本个数要求),这个字段是不存在的。

4字节

packetLen,package长度

8字节

chunk的偏移量(用戶读取文件时,很可能偏移一个位置,偏移的位置很可能不在一个chunk的结束位置,因为checksum是按照chunk来计算的,所以hadoop会将这部分偏移量的数据多传送给client,client需要将这部分数据丢弃

8字节

Seqno序列号

byte

是否是block数据块的最后一个package

4字节

传输的block中包含的数据大小

CheckSum数据

缺省的CheckSum为CRC32(缺省每个chunk的checksum占四个字节)

实际block数据

有多少写多少

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值