通常准则html
- 是否压缩数据以及使用何种压缩格式对性能具备重要的影响。在数据压缩上,须要考虑的最重要的两个方面是 MapReduce 做业和存储在 HBase 中的数据。在大多数状况下,每一个的原则都相似。
- 您须要平衡压缩和解压缩数据所需的能力、读写数据所需的磁盘 IO,以及在网络中发送数据所需的网络带宽。正确平衡这些因素有赖于集群和数据的特征,以及您的
- 使用模式。
MR2
hadoop jar hadoop-examples-.jar sort "-Dmapreduce.compress.map.output=true" "-Dmapreduce.map.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec" "-Dmapreduce.output.compress=true" "-Dmapreduce.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec" -outKey org.apache.hadoop.io.Text -outValue org.apache.hadoop.io.Text input output MR1 hadoop jar hadoop-examples-.jar sort "-Dmapred.compress.map.output=true" "-Dmapred.map.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec" "-Dmapred.output.compress=true" "-Dmapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec" -outKey org.apache.hadoop.io.Text -outValue org.apache.hadoop.io.Text input output
压缩简介java
Hadoop 做为一个较通用的海量数据处理平台,每次运算都会须要处理大量数据,咱们会在 Hadoop 系统中对数据进行压缩处理来优化磁盘使用率,提升数据在磁盘和网络中的传输速度,从而提升系统处理数据的效率。在使用压缩方式方面,主要考虑压缩速度和压缩文件的可分割性。综合所述,使用压缩的优势以下:linux
- 节省数据占用的磁盘空间;
- 加快数据在磁盘和网络中的传输速度,从而提升系统的处理速度。
压缩格式算法
压缩格式 | 工具 | 算法 | 扩展名 | 多文件 | 可分割性 |
---|---|---|---|---|---|
DEFLATE | 无 | DEFLATE | .deflate | 不 | 不 |
GZIP | gzip | DEFLATE | .gzp | 不 | 不 |
ZIP | zip | DEFLATE | .zip | 是 | 是,在文件范围内 |
BZIP2 | bzip2 | BZIP2 | .bz2 | 不 | 是 |
LZO | lzop | LZO | .lzo | 不 | 是 |
hadoop jar /usr/home/hadoop/hadoop-0.20.2/contrib/streaming/ hadoop-streaming-0.20.2-CD H3B4.jar -file /usr/home/hadoop/hello/mapper.py -mapper / usr/home/hadoop/hello/mapper.py -file /usr/home/hadoop/hello/ reducer.py -reducer /usr/home/hadoop/hello/reducer.py -input lzotest -output result4 - jobconf mapred.reduce.tasks=1*-inputformatorg.apache.hadoop.mapred.LzoTextInputFormat*
性能对比apache
压缩算法 | 原始文件大小 | 压缩文件大小 | 压缩速度 | 解压速度 |
---|---|---|---|---|
gzip | 8.3GB | 1.8GB | 17.5MB/s | 58MB/s |
bzip2 | 8.3GB | 1.1GB | 2.4MB/s | 9.5MB/s |
LZO-bset | 8.3GB | 2GB | 4MB/s | 60.6MB/s |
LZO | 8.3GB | 2.9GB | 49.3MB/s | 74.6MB/s |
所以咱们能够得出:
1) Bzip2 压缩效果明显是最好的,可是 bzip2 压缩速度慢,可分割。
2) Gzip 压缩效果不如 Bzip2,可是压缩解压速度快,不支持分割。
3) LZO 压缩效果不如 Bzip2 和 Gzip,可是压缩解压速度最快!而且支持分割!网络
这里提一下,文件的可分割性在 Hadoop 中是很很是重要的,它会影响到在执行做业时 Map 启动的个数,从而会影响到做业的执行效率!并发
全部的压缩算法都显示出一种时间空间的权衡,更快的压缩和解压速度一般会耗费更多的空间。在选择使用哪一种压缩格式时,咱们应该根据自身的业务需求来选择。app
目前在Hadoop中用得比较多的有lzo,gzip,snappy,bzip2这4种压缩格式,笔者根据实践经验介绍一下这4种压缩格式的优缺点和应用场景,以便你们在实践中根据实际状况选择不一样的压缩格式。工具
1.gzip压缩oop
2.lzo压缩
3.snappy压缩
4.bzip2压缩
5.4种压缩格式的特征的比较
压缩格式 | split | native | 压缩率 | 速度 | 是否hadoop自带 | linux命令 | 换成压缩格式后,原来的应用程序是否要修改 |
---|---|---|---|---|---|---|---|
gzip | 否 | 是 | 很高 | 比较快 | 是,直接使用 | 有 | 和文本处理同样,不须要修改 |
lzo | 是 | 是 | 比较高 | 很快 | 否,须要安装 | 有 | 须要建索引,还须要指定输入格式 |
snappy | 否 | 是 | 比较高 | 很快 | 否,须要安装 | 没有 | 和文本处理同样,不须要修改 |
bzip2 | 是 | 否 | 最高 | 慢 | 是,直接使用 | 有 | 和文本处理同样,不须要修改 |
目前CDH集群通常均可选安装 Hadoop_Lzo,ucloud集群目前是集成了lzo的