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 的基本操作

  内容如下:

  测试序列文件的读写操作 && 测试序列文件的排序操作 && 测试序列文件的合并操作 && 测试序列文件的压缩方式 && 测试将日志文件转换成序列文件

  详情链接:

  SequenceFile 的基本操作


5. SequenceFile 的特性

  【Write】

    写

  【Read】

    读

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

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

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

  【Sort】

      //sort  => 对sequenceFile进行排序

      //merge      => 合并+排序

  【SequenceFile 压缩说明】

  SequenceFile 压缩分为不压缩、记录压缩(默认)、块压缩

  

  记录压缩只压缩值,详情如下:

  

  块压缩:将多组 K-V 聚集成一个 "block" 然后进行压缩

  块压缩是指一次性压缩多条记录,利用记录间的相似性进行压缩,压缩效率高,压缩的块大小默认 1MB

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

  

  Windows 下查看压缩后的 seqfile :

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

最新文章

  1. Python Day12
  2. 转发 VS 重定向
  3. Lingo 做线性规划 - DEA
  4. COJ 拯救瑞恩
  5. cocos2d-html5将js编译为jsc
  6. 顺丰快递单号查询api对接(全代码)
  7. ZooKeeper(3.4.5) - 配置伪集群模式
  8. SaaS系列介绍之六: SaaS模式分析(上)
  9. Cordova+angularjs+ionic+vs2015开发(五)
  10. easy ui 如何单个引用其中某个插件?
  11. mvc模式jsp+servel+dbutils oracle基本增删改查demo
  12. Jquery Easyui与Jquery Bootstrap(Metronic Bootstrap)的简单比较
  13. iframe中的模态框遮罩父窗口原理
  14. 1013团队alpha冲刺日志集合帖
  15. 如何书写高效的css样式
  16. 理解java值传递与引用传递
  17. 2018-2019-2 网络对抗技术 20165335 Exp4 恶意代码分析
  18. 【转】VMware Tools installation cannot be started manually while Easy Install is in progress.
  19. java-学习8
  20. SoapUI利用Groovy对response与断言的处理

热门文章

  1. python字符串操作简单方法
  2. 全网最详细的一个超级好用的命令行工具【Cmder】是什么?
  3. MySQL 5.6 GTID Replication
  4. static和fianl修饰变量的区别
  5. Django 学习笔记(五) --- Ajax 传输数据
  6. bootstrap知识笔记
  7. Python 3 进阶 —— print 打印和输出
  8. Hive 表类型简述
  9. 将第三方包安装到maven本地仓库
  10. 【Dubbo&&Zookeeper】6、 给dubbo接口添加白名单——dubbo Filter的使用