hadoop 2.6 源码 解读之读写中级单元Packet类

35 篇文章 0 订阅
23 篇文章 2 订阅

在hdfs中 Packet 是读写 网络传输的基本单元, 有必要探讨下Packet 的基本结构

以下是Packet 类所有的数据成员,均已详细注释

private static class Packet {
    private static final long HEART_BEAT_SEQNO = -1L;
    long seqno; // sequencenumber of buffer in block
    final long offsetInBlock; // offset in block
    boolean syncBlock; // this packet forces the current block to disk
    //当前Packet 有多少个 chunk
    int numChunks; // number of chunks currently in packet
    final int maxChunks; // max chunks in packet
    //大小为65565,计算来源为:33(packet头部长度) + 4(checksum长度)*127 + 512(chunk长度)* 127
    private byte[] buf;
    private boolean lastPacketInBlock; // is this the last packet in block?
    //校验数据的其实位置,33
    int checksumStart;
    //校验数据的当前位置,每一个占用4个byte,第一位置也是33
    int checksumPos;
    //实际数据的其实位置,541
    final int dataStart;
    //校验数据的当前位置,分割为每一个chunk,每个chunk占512个byte,第一chunk位置也是541
    int dataPos;
    ...
    }

packet 结构如下

*  (C is checksum data, D is payload data,C之前为packet的header结构)
     *
     * [_________CCCCCCCCC________________DDDDDDDDDDDDDDDD___]
     *           ^        ^               ^               ^
     *           |        checksumPos     dataStart       dataPos
     *           checksumStart
     * 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值