通常準則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的