【前言】
我们都知道日志聚合后的文件是存放在HDFS中的,然而每个application可能会有很多的container,每个container又有多个日志文件,那么日志聚合后,这些日志文件在HDFS中是怎样进行存放的。本文就来聊聊hadoop日志聚合后的文件格式及相关内容。
【TFile&BCFile】
在HDFS中,提供了多种文件格式,有普通的文件文件格式和二进制格式;用于KV键值对存储的SequenceFile,TFile;有用于列式存储的parquet,rc,orc等格式。
这里重点要说的是TFile,因为聚合后的日志文件就是采用这种格式进行存储的。
提到TFile,那么就不得不提起BCFile,因为BCFile是TFile的底层物理存储层。
BCFile是Block Compresed File的缩写,顾名思义,数据的存储是按照一个一个的Block进行存储的,同时这些block是可以进行压缩存储的。按照作用这些block可以分为数据块(DataBlock)和元数据块(MetaBlock),数据块通常就是要写入的数据内容,而元数据块可以自定义写入,BCFile也会将数据块的索引信息记录下来作为元数据块写入到文件中。
BCFile的具体格式如下图所示: