3.3 小结
本章涉及了org.apache.hadoop.io包下最重要的两部分内容:序列化和压缩。
序列化广泛应用于分布式数据处理中,是交换数据必备的能力。Hadoop没有使用Java内建的序列化机制,而是引入了紧凑、快速、轻便和可扩展的Writable接口。Writable接口通过write()和readFields()方法声明了序列化和反序列化的功能。在此基础上,分析了Writable的一些典型子类的实现,包括Java基本类型对应的Writable封装和ObjectWritable,它们为用户使用Hadoop提供了很多方便。
压缩是org.apache.hadoop.io包中实现的另一个重要功能,Hadoop必须支持多种压缩算法,如何灵活地支持这些算法呢?Hadoop实现了压缩框架,包括编码/解码器及其工厂、压缩器/解压器以及压缩流/解压缩流三种组件,它们相互配合满足了用户对压缩功能的需求。最后,以Cloudera发行版中Snappy压缩功能的实现为例,介绍了在压缩框架里如何集成新的压缩算法并支持本地库,以提高压缩效率。