Hadoop序列文件

Posted 山间一棵松

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop序列文件相关的知识,希望对你有一定的参考价值。

1. 关于SequenceFile

  对于日志文件来说,纯文本不适合记录二进制类型数据,通过SequenceFile为二进制键值对提供了持久的数据结构,将其作为日志文件的存储格式时,可自定义键(LongWritable)和值(Writeable的实现类)的类型。

  多个小文件在进行计算时需要开启很多进程,所以采用容器文件SequenceFile按固定大小将多个小文件包装起来,使存储和处理更高效。

2. SequenceFile说明

  SequenceFile序列文件

  是由序列化K-V对组成,而K和V即hadoop的writable格式

   

  为什么使用序列文件

  1、纯文本文件(日志文件)占用了磁盘空间较大

  2、将日志文件通过序列文件进行包装,可以获得更好的性能(处理速度和磁盘空间的压缩)

3. SequenceFile特性

  1、扁平化文件,包括二进制的k-v(将多行纵向的日志文件变成纵向的文件)

  2、可读、可写、可排序

  3、有三种压缩方式来压缩k-v对

    1)不压缩

    2)记录压缩:只压缩value

    3)块压缩:将多组k-v聚集成一个“block”然后进行压缩

  4、seqFile格式

    1)SEQ三字节的头 + 数字(如6)作为版本号

    2)key的完整类名

    3)value的完整类名

    4)boolean值,指定了seqFile是否采用压缩

    5)boolean值,指定了seqFile是否采用块压缩

    6)压缩编解码器类

    7)metadata:源数据

    8)sync:同步点

4. SequenceFile的基本操作

  待补充

5. SequenceFile的特性

  Write//写

  Read//读

    //seek  =>  将读取指针手动移动,如果指针不在文件头,则会报错

    //getPosition => 得到当前指针位置

    //sync  => 获取下一个同步点位置

  Sort

    //sort  => 对sequenceFile进行排序

    //merge      => 合并+排序

 

在块压缩中,同步点与同步点之间是以块为单位进行存储的,块是多个k-v聚集的产物

 

 

查看压缩后的seqfile:

hdfs dfs -text file:///D:/seq/random.seq

以上是关于Hadoop序列文件的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop HDFS:读取正在写入的序列文件

反序列化内存中的 Hadoop 序列文件对象

Hadoop序列文件

Hadoop IO

Hadoop之序列化

hadoop文件格式和压缩