HDFS2—SequenceFile(小文件的解决方案)

1、这种方法是说,使用filename作为key,并且file contents作为value。实践中这种方式非常管用。

2、和HAR不同的是,这种方式还支持压缩。

3、block的压缩在许多情况下都是最好的选择,因为它将多个 records压缩到一起,而不是一个record一个压缩。

4、在存储结构上,SequenceFile主要由一个Header后跟多条Record组成。

5、Header主要包含了Key classname,Value classname,存储压缩算法,用户自定义元数据等信息,此外,还包含了一些同步标识,用于快速定位到记录的边界。

6、每条Record以键值对的方式进行存储,用来表示它的字符数组可依次解析成:记录的长度、Key的长度、Key值和Value值,并且Value值的结构取决于该记录是否被压缩。

7、数据压缩有利于节省磁盘空间和加快网络传输,SeqeunceFile支持两种格式的数据压缩,分别是:record compression和block compression。
8、record compression如上图所示,是对每条记录的value进行压缩
9、block compression是将一连串的record组织到一起,统一压缩成一个block,如上图。

10、block信息主要存储了:块所包含的记录数、每条记录Key长度的集合、每条记录Key值的集合、每条记录Value长度的集合和每条记录Value值的集合
注:每个block的大小是可通过io.seqfile.compress.blocksize属性来指定的。

原文地址:https://www.cnblogs.com/tzq9308/p/5096804.html