Hadoop压缩存储测试执行
1.放大测试数据
放大之后的大小 : 6.26
内容 : 重复的测序数据
上传到服务器 文件名 : test1_R1.fq
2.部署Hadoop环境
2.1上传Hadoop包
3.执行各个格式压缩解压
设置HDFS的副本数为1
查看可用的压缩格式
hadoop checknative
配置压缩格式之后
3.1代码实现打成Jar包上传到服务器
3.2Gzip
hejiahao@MountHua:~/package$ java -jar /home/hejiahao/package/HadoopCompress-1.0-SNAPSHOT.jar compress org.apache.hadoop.io.compress.GzipCodec /home/hejiahao/package/test1_R1.fq .gz .fq
log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.Shell).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
hejiahao@MountHua:~/package$ java -jar /home/hejiahao/package/HadoopCompress-1.0-SNAPSHOT.jar compress org.apache.hadoop.io.compress.GzipCodec /home/hejiahao/package/test1_R1.fq .fq .gz
log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.Shell).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
05:02:50开始压缩------/home/hejiahao/package/test1_R1.fq
/home/hejiahao/package/test1_R1.fq--------压缩完成05:03:29
hejiahao@MountHua:~/package$ java -jar /home/hejiahao/package/HadoopCompress-1.0-SNAPSHOT.jar uncompress org.apache.hadoop.io.compress.GzipCodec /home/hejiahao/package/test1_R1.gz .gz .fq
log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.Shell).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
load lzo class completed: org.apache.hadoop.io.compress.GzipCodec
05:06:00开始解压------/home/hejiahao/package/test1_R1.gz
org.apache.hadoop.io.compress.DecompressorStream@166fa74d--org.apache.hadoop.fs.FSDataOutputStream@40f08448
/home/hejiahao/package/test1_R1.gz--------解压完成05:06:15
结论 :
原始大小 : 6.3GB
压缩文件 : 60MB
压缩效率 : 53.16MB/s
压缩时间 : 39s
解压效率 : 336MB/s
解压时间 : 15s
3.3 Lzo
[root@hadoop101 testData]# lzop -v test1_R1.fq
compressing test1_R1.fq into test1_R1.fq.lzo
[root@hadoop101 testData]# ll -h
total 7.7G
-rw-r--r-- 1 root root 393M Sep 21 23:44 090413_I352_FC31307AAXX_L6_SORssqRADDHAAPE_1.fq.gz
-rw-r--r-- 1 root root 722M Sep 22 00:26 090607_I352_FC31309AAXX_L1_SORssqRAPDIBAPE_2.fq.gz
-rw-r--r-- 1 root root 6.3G Sep 22 06:51 test1_R1.fq
-rw-r--r-- 1 root root 263M Sep 22 06:51 test1_R1.fq.lzo
[root@hadoop101 xinjian]# lzop -dv test1_R1.fq.lzo
decompressing test1_R1.fq.lzo into test1_R1.fq
[root@hadoop101 xinjian]# ll
total 6844044
-rw-r--r-- 1 root root 6732822698 Sep 22 06:51 test1_R1.fq
-rw-r--r-- 1 root root 275475630 Sep 22 06:51 test1_R1.fq.lzo
结论 :
原始大小 : 6.3GB
压缩文件 : 263M
压缩效率 : 105MB/s
压缩时间 : 40秒
解压效率 : 39MB/s
解压时间 : 8秒
3.4 BZip2
[root@hadoop101 testData]# java -jar /opt/software/HadoopCompress-1.0-SNAPSHOT.jar compress org.apache.hadoop.io.compress.BZip2Codec test1_R1.fq .fq .fq.bz2
log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.Shell).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
开始压缩------test1_R1.fq
test1_R1.fq--------压缩完成
------------------------------------------------开始压缩下一个文件-------------------------------------------------------
[root@hadoop101 testData]# java -jar /opt/software/HadoopCompress-1.0-SNAPSHOT.jar uncompress org.apache.hadoop.io.compress.BZip2Codec test1_R1.fq.bz2 .fq.bz2 .fq
log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.Shell).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
load lzo class completed: org.apache.hadoop.io.compress.BZip2Codec
开始解压------test1_R1.fq.bz2
org.apache.hadoop.io.compress.BZip2Codec$BZip2CompressionInputStream@46238e3f--org.apache.hadoop.fs.FSDataOutputStream@6e2c9341
test1_R1.fq.bz2--------解压完成
------------------------------------------------开始解压下一个文件-------------------------------------------------------
[root@hadoop101 testData]#
结论 :
原始大小 : 6.3GB
压缩文件 : 50MB
压缩效率 : 3.4MB/s
压缩时间 : 35分钟
解压效率 : 8.9MB/s
解压时间 : 3分钟
3.5 Default
[root@hadoop101 testData]# java -jar /opt/software/HadoopCompress-1.0-SNAPSHOT.jar compress org.apache.hadoop.io.compress.DefaultCodec test1_R1.fq .fq .fq.deflate
log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.Shell).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
开始压缩------test1_R1.fq
test1_R1.fq--------压缩完成
------------------------------------------------开始压缩下一个文件-------------------------------------------------------
[root@hadoop101 testData]# ll
total 1202184
-rw-r--r-- 1 root root 412088417 Sep 21 23:44 090413_I352_FC31307AAXX_L6_SORssqRADDHAAPE_1.fq.gz
-rw-r--r-- 1 root root 756945670 Sep 22 00:26 090607_I352_FC31309AAXX_L1_SORssqRAPDIBAPE_2.fq.gz
-rw-r--r-- 1 root root 61996481 Sep 22 06:47 test1_R1.fq.deflate
[root@hadoop101 testData]#
[root@hadoop101 testData]# java -jar /opt/software/HadoopCompress-1.0-SNAPSHOT.jar uncompress org.apache.hadoop.io.compress.BZip2Codec test1_R1.fq.bz2
log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.Shell).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
load lzo class completed: org.apache.hadoop.io.compress.BZip2Codec
开始解压------test1_R1.fq.bz2
org.apache.hadoop.io.compress.BZip2Codec$BZip2CompressionInputStream@46238e3f--org.apache.hadoop.fs.FSDataOutputStream@6e2c9341
test1_R1.fq.bz2--------解压完成
[root@hadoop101 testData]# ll
total 7716664
-rw-r--r-- 1 root root 412088417 Sep 21 23:44 090413_I352_FC31307AAXX_L6_SORssqRADDHAAPE_1.fq.gz
-rw-r--r-- 1 root root 756945670 Sep 22 00:26 090607_I352_FC31309AAXX_L1_SORssqRAPDIBAPE_2.fq.gz
-rw-r--r-- 1 root root 6732822698 Sep 22 06:51 test1_R1.fq
结论 :
原始大小 : 6.3GB
压缩文件 : 61MB
压缩效率 : 55MB/s
压缩时间 : 95秒
解压效率 : 17.2MB/s
解压时间 : 10秒
3.6 Lz4
[root@hadoop101 testData]# java -jar /opt/software/HadoopCompress-1.0-SNAPSHOT.jar compress org.apache.hadoop.io.compress.Lz4Codec /testData/test1_R1.fq .fq .fq.lz4
log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.Shell).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
开始压缩------/testData/test1_R1.fq
/testData/test1_R1.fq--------压缩完成
------------------------------------------------开始压缩下一个文件-------------------------------------------------------
[root@hadoop101 testData]# java -jar /opt/software/HadoopCompress-1.0-SNAPSHOT.jar uncompress org.apache.hadoop.io.compress.Lz4Codec /testData/test1_R1.fq.lz4 .lz4 .fq
log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.Shell).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
load lzo class completed: org.apache.hadoop.io.compress.Lz4Codec
开始解压------/testData/test1_R1.fq.lz4
org.apache.hadoop.io.compress.BlockDecompressorStream@1efee8e7--org.apache.hadoop.fs.FSDataOutputStream@1ee807c6
/testData/test1_R1.fq.lz4--------解压完成
------------------------------------------------开始解压下一个文件-------------------------------------------------------
结论 :
原始大小 : 6.3GB
压缩文件 : 74MB
压缩效率 : 110MB/s
压缩时间 : 54秒
解压效率 : 45.32MB/s
解压时间 : 7秒
4.统计压缩效率
压缩算法 | 原始文件大小 | 压缩文件大小 | 压缩速度 | 解压速度 |
---|---|---|---|---|
Gzip | 6.3GB | 61MB | 53.16MB/s | 68MB/s |
BZip2 | 6.3GB | 50MB | 3.4MB/s | 8.9MB/s |
Default | 6.3GB | 61MB | 55.48MB/s | 17.2MB/s |
Lzo | 6.3GB | 263MB | 105MB/s | 39MB/s |
Lz4 | 6.3GB | 74MB | 110MB/s | 45.32MB/s |
5.验证数据完整性
- Gzip
[root@hadoop101 testData]# wc -l test1_R1.gz
52216 test1_R1.gz
[root@hadoop101 testData]#
[root@hadoop101 testData]# wc -l test1_R1.fq
73189026 test1_R1.fq
[root@hadoop101 testData]#
Gzip行数 52216 解压之后行数73189026
- Bzip2
hejiahao@MountHua:~/package$ wc -l test1_R1.fq.bz2
263703 test1_R1.fq.bz2
hejiahao@MountHua:~/package$
hejiahao@MountHua:~/package$ wc -l test1_R1.fq
73189026 test1_R1.fq
hejiahao@MountHua:~/package$
Bzip2文件行数 263703 解压之后行数73189026
测试结果报告
放大数据版测试报告
压缩算法 | 原始文件大小 | 压缩文件大小 | 压缩速度 | 解压速度 |
---|---|---|---|---|
Gzip | 6.3GB | 61MB | 53.16MB/s | 68MB/s |
BZip2 | 6.3GB | 50MB | 3.4MB/s | 8.9MB/s |
Default | 6.3GB | 61MB | 55.48MB/s | 17.2MB/s |
Lzo | 6.3GB | 263MB | 105MB/s | 39MB/s |
Lz4 | 6.3GB | 74MB | 110MB/s | 45.32MB/s |
其他数据版测试报告
压缩算法 | 原始文件大小 | 压缩文件大小 | 压缩速度 | 解压速度 |
---|---|---|---|---|
Gzip | 1.9G | 721MB | 16.65MB/s | 23.35MB/s |
BZip2 | 1.9G | 592M | 10.03MB/s | 15.26MB/s |
Default | 1.9G | 721MB | 17.42MB/s | 26MB/s |
Lzo | 1.9G | 1.1G | 35MB/s | 17MB/s |
Lz4 | 1.9G | 1.2 | 39MS/s | 21MB/s |
压缩时服务器性能
hejiahao@MountHua:~$ free -m
total used free shared buff/cache available
Mem: 32043 3144 11012 1 17886 28446
Swap: 8191 0 8191
hejiahao@MountHua:~$
- 内存使用情况
total : 总数32043
used : 已使用 3144
free : 空闲数 11012
shared : 共享内存总额 0
buff/cache:(已用)的内存数 17886
available : 还剩内存 28446
数据是否丢失
- Gzip
[root@hadoop101 testData]# wc -l test1_R1.gz
52216 test1_R1.gz
[root@hadoop101 testData]#
[root@hadoop101 testData]# wc -l test1_R1.fq
73189026 test1_R1.fq
[root@hadoop101 testData]#
Gzip行数 52216 解压之后行数73189026
- Bzip2
hejiahao@MountHua:~/package$ wc -l test1_R1.fq.bz2
263703 test1_R1.fq.bz2
hejiahao@MountHua:~/package$
hejiahao@MountHua:~/package$ wc -l test1_R1.fq
73189026 test1_R1.fq
hejiahao@MountHua:~/package$
Bzip2文件行数 263703 解压之后行数73189026
结论:数据未丢失
总结及建议采用格式
gzip压缩
- 优点:
- 压缩率比较高,而且压缩/解压速度也比较快;
- hadoop本身支持,在应用中处理gzip格式的文件就和直接处理文本一样;
- 有hadoop native库;
- 大部分linux系统都自带gzip命令,使用方便。
- 缺点:不支持split。
lzo压缩
- 优点:
- 压缩/解压速度也比较快,合理的压缩率;
- 支持split,是hadoop中最流行的压缩格式;
- 支持hadoop native库;
- 可以在linux系统下安装lzop命令,使用方便。
- 缺点:
- 压缩率比gzip要低一些;
- hadoop本身不支持,需要安装;
- 在应用中对lzo格式的文件需要做一些特殊处理(为了支持split需要建索引,还需要指定inputformat为lzo格式)。
bzip2压缩
- 优点:
- 支持split;
- 具有很高的压缩率,比gzip压缩率都高;
- hadoop本身支持,但不支持native;
- 在linux系统下自带bzip2命令,使用方便。
- 缺点:
- 压缩/解压速度慢;
- 不支持native。
建议
- Bzip2 :
速度要求不高,但需要较高的压缩率的时候以及,
对单个很大的文本文件想压缩减少存储空间,同时又需要支持split,而且兼容之前的应用程序(即应用程序不需要修改)的情况。