首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > 云计算 >

HDFS1.0源代码解析—数据传输跟接受的类BlockSender和BlockReceiver

2012-08-08 
HDFS1.0源代码解析—数据传输和接受的类BlockSender和BlockReceiver本次主要介绍DN端进行数据传输和接受的

HDFS1.0源代码解析—数据传输和接受的类BlockSender和BlockReceiver
本次主要介绍DN端进行数据传输和接受的类BlockSender和BlockReceiver,其中BlockSender是读取DN本地block数据传送回数据请求端,BlockReceiver是接受存储数据,写入到本地的block中。
首选介绍BlockSender的主要函数的作用:

构造函数

245     if (len > bytesPerChecksum && len % bytesPerChecksum != 0) {246       len -= len % bytesPerChecksum;247     }257     // write packet header258     pkt.putInt(packetLen);259     pkt.putLong(offset);260     pkt.putLong(seqno);261     pkt.put((byte)((offset + len >= endOffset) ? 1 : 0));262                //why no ByteBuf.putBoolean()?263     pkt.putInt(len);264265     int checksumOff = pkt.position();266     int checksumLen = numChunks * checksumSize;267     byte[] buf = pkt.array();269     if (checksumSize > 0 && checksumIn != null) {270       try {271         checksumIn.readFully(buf, checksumOff, checksumLen);272       } catch (IOException e) {289     int dataOff = checksumOff + checksumLen;
245-249行主要是控制在传输最后一块数据之前传输的所有都是整块,这点好处注释中有写,但是不是太明白,希望大神留言指点。257-263行是写入一些读取使用的控制信息,比如packet的长度、偏移、序号等等。269到272行读取元数据信息,289以后是对读取block真实数据的方式做判断,最终都是将数据写入到pkt中。最后,输出流out将数据输出。





















热点排行