Hadoop 入门笔记七: Hadoop 文件压缩格式
一.背景
在Hadoop中,一般存储着非常大的文件,以及在存储HDFS块或运行MapReduce任务时,Hadoop集群中节点之间的存在大量数据传输。 如果条件允许时,尽量减少文件大小,这将有助于减少存储需求以及减少网络上的数据传输。
二. Hadoop支持的压缩算法
Haodop对文件压缩均实现org.apache.hadoop.io.compress.CompressionCodec接口,所有的实现类都在org.apache.hadoop.io.compress包下
文章图片
1. 压缩算法比较
有不少的压缩算法可以应用到Hadoop中,但不同压缩算法有各自的特点。
文章图片
存放数据到HDFS中,可以选择指定的压缩方式,在MapReduce程序读取时,会根据扩展名自动解压。例如:如果文件扩展名为.snappy,Hadoop框架将自动使用SnappyCodec解压缩文件。
文章图片
整体排序如下:
Snappy < LZ4 < LZO < GZIP < BZIP2,但压缩比越高,压缩的时间也会更长。以下是部分参考数据
文章图片
2. HDFS压缩如何抉择
【Hadoop 入门笔记七: Hadoop 文件压缩格式】既然压缩能够节省空间、而且可以提升IO效率,那么能否将所有数据都以压缩格式存储在HDFS中呢?例如:bzip2,而且文件是支持切分的。
- 如果文件是不可切分的,只有一个CPU在处理所有的文件,其他的CPU都是空闲的。如果HDFS中的block和文件大小差不多还好,一个文件、一个块、一个CPU。如果是一个很大的文件就会出现问题了
- bzip2在压缩和解压缩数据方面实际上平均比Gzip差3倍,这对性能是有一定的影响的。如果我们需要频繁地查询数据,数据压缩一定会影响查询效率
- 如果不关心查询性能(没有任何SLA)并且很少选择此数据,则bzip2可能是不错的选择。最好是对自己的数据进行基准测试,然后再做决定。
推荐阅读
- EffectiveObjective-C2.0|EffectiveObjective-C2.0 笔记 - 第二部分
- Android中的AES加密-下
- 【读书笔记】贝叶斯原理
- 【韩语学习】(韩语随堂笔记整理)
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题
- 人性的弱点-笔记
- 读书笔记:博登海默法理学|读书笔记:博登海默法理学 —— 正义的探索(1)
- D034+3组苏曼+《写作这回事》读书笔记
- 《自我的追寻》读书笔记3
- 最有效的时间管理工具(赢效率手册和总结笔记)