【HDFS】BlockSender发送数据源码详解

本文包含如下内容:
1、BlockSend在发送数据之前读数据文件和meta文件生成的Packet的结构。
2、BlockSender的核心方法:sendBlock和sendPacket。

前言:
BlockSender#sendBlock有几处调用场景,分别是:
1、copyBlock,用于balancing;
2、DataTransfer#run,用于pipeline恢复过程中往新datanode传输已写入数据;
3、readBlock,客户端读数据;
4、scanBlock,VolumeScanner扫描块。周期性扫描块,提前发现block checksum异常 corrupt的块。

一、关于Packet的结构

BlockSender从磁盘读一个block然后发给接收者。

class BlockSender implements java.io.Closeable {
   }

从BlockSender发

你可能感兴趣的:(HDFS全方位实战,hdfs,hadoop,大数据)