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

在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
     * 

猜你喜欢

转载自blog.csdn.net/zhixingheyi_tian/article/details/80354857