[原][hadoop2.7.1]I/O之压缩

先来看下类图(hadoop2.7.1):

[原][hadoop2.7.1]I/O之压缩_第1张图片


对照类图,对每一种压缩算法做个简单介绍:


DeflateCodec(DEFLATE)


hadoop2.7.1中实际上就是DefaultCodec。

它同时使用了LZ77算法与哈夫曼编码(Huffman Coding)的一个无损数据压缩算法。

人们普遍认为DEFLATE不受任何专利所制约,并且在LZW(GIF文件格式使用)相关的专利失效之前,这种格式除了在ZIP文件格式中得到应用之外也在gzip压缩文件以及PNG图像文件中得到了应用。
DEFLATE压缩与解压的源代码可以在自由、通用的压缩库zlib上找到。
更高压缩率的DEFLATE是7-zip所实现的。AdvanceCOMP也使用这种实现,它可以对gzip、PNG、MNG以及ZIP文件进行压缩从而得到比zlib更小的文件大小。在Ken Silverman的KZIP与PNGOUT中使用了一种更加高效同时要求更多用户输入的DEFLATE程序。


哈夫曼编码(Huffman Coding)


是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种,用于无损数据压缩的熵编码(权编码)。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做Huffman编码(有时也称为霍夫曼编码)。


LZ77

LZ77严格意义上来说不是一种算法,而是一种编码理论。同Huffman编码一样,只定义了原理,并没有定义如何实现。基于这种理论来实现的算法才称为LZ77算法,或者人们更愿意称为LZ77变种。实际上这类算法已经有很多了,比如LZSS、LZB、LZH等。
LZ77编码是一种基于字典的、“滑动窗”的无损压缩算法,广泛应用于通信、计算机文件存档等方面。

“字典”的思路相当简单,我们日常生活中就经常在使用这种压缩思想。我们常常跟人说“奥运会”、“IBM”、“TCP”之类的词汇,说者和听者都明白它们指的是“奥林匹克运动会”、“国际商业机器公司”和“传输控制协议”,这实际就是信息的压缩。我们之所以可以顺利使用这种压缩方式而不产生语义上的误解 ,是因为在说者和听者的心中都有一个事先定义好的缩略语字典,我们在对信息进 行压缩(说)和解压缩(听)的过程中都对字典进行了查询操作作。字典压缩模型正是基于这一思路设计实现的。


GzipCodec(gzip)


是以DEFLATE算法为基础扩展出来的一种算法。








作者:s060403072 发表于2015/11/13 13:41:26 原文链接
阅读:13 评论:0 查看评论

你可能感兴趣的:([原][hadoop2.7.1]I/O之压缩)