我爱编程

HADOOP与HDFS数据压缩格式

2016-11-26  本文已影响2350人  VentLam

HADOOP与HDFS数据压缩格式

1、cloudera 数据压缩的一般准则

一般准则

  • 是否压缩数据以及使用何种压缩格式对性能具有重要的影响。在数据压缩上,需要考虑的最重要的两个方面是 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

2、Hadoop 压缩实现分析

压缩简介

Hadoop 作为一个较通用的海量数据处理平台,每次运算都会需要处理大量数据,我们会在 Hadoop 系统中对数据进行压缩处理来优化磁盘使用率,提高数据在磁盘和网络中的传输速度,从而提高系统处理数据的效率。在使用压缩方式方面,主要考虑压缩速度和压缩文件的可分割性。综合所述,使用压缩的优点如下:

  1. 节省数据占用的磁盘空间;
  2. 加快数据在磁盘和网络中的传输速度,从而提高系统的处理速度。

压缩格式

  1. Hadoop 对于压缩格式的是自动识别。如果我们压缩的文件有相应压缩格式的扩展名(比如 lzo,gz,bzip2 等)。
  2. Hadoop 会根据压缩格式的扩展名自动选择相对应的解码器来解压数据,此过程完全是 Hadoop 自动处理,我们只需要确保输入的压缩文件有扩展名。
  3. Hadoop 对每个压缩格式的支持, 详细见下表:
压缩格式 工具 算法 扩展名 多文件 可分割性
DEFLATE DEFLATE .deflate
GZIP gzip DEFLATE .gzp
ZIP zip DEFLATE .zip 是,在文件范围内
BZIP2 bzip2 BZIP2 .bz2
LZO lzop LZO .lzo
  1. 如果压缩的文件没有扩展名,则需要在执行 MapReduce 任务的时候指定输入格式。
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*

性能对比

  1. Hadoop 下各种压缩算法的压缩比,压缩时间,解压时间见下表:
压缩算法 原始文件大小 压缩文件大小 压缩速度 解压速度
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 启动的个数,从而会影响到作业的执行效率!

所有的压缩算法都显示出一种时间空间的权衡,更快的压缩和解压速度通常会耗费更多的空间。在选择使用哪种压缩格式时,我们应该根据自身的业务需求来选择。

3、4种常用压缩格式在Hadoop中的应用

目前在Hadoop中用得比较多的有lzo,gzip,snappy,bzip2这4种压缩格式,笔者根据实践经验介绍一下这4种压缩格式的优缺点和应用场景,以便大家在实践中根据实际情况选择不同的压缩格式。

1.gzip压缩

2.lzo压缩

3.snappy压缩

4.bzip2压缩

5.4种压缩格式的特征的比较

压缩格式 split native 压缩率 速度 是否hadoop自带 linux命令 换成压缩格式后,原来的应用程序是否要修改
gzip 很高 比较快 是,直接使用 和文本处理一样,不需要修改
lzo 比较高 很快 否,需要安装 需要建索引,还需要指定输入格式
snappy 比较高 很快 否,需要安装 没有 和文本处理一样,不需要修改
bzip2 最高 是,直接使用 和文本处理一样,不需要修改

目前CDH集群一般都可选安装 Hadoop_Lzo,ucloud集群目前是集成了lzo的

上一篇 下一篇

猜你喜欢

热点阅读