关于几种压缩算法以及hadoop和hbase中的压缩配置说明
2014-05-23 10:41
405 查看
详细页面:http://www.verydemo.com/demo_c134_i47830.html
Hadoop中常用的[b]压缩算法[/b]有bzip2、gzip、lzo、snappy,其中lzo、snappy需要操作系统安装native库才可以支持
下面这张表,是比较官方一点的统计,不同的场合用不同的[b]压缩算法[/b]。bzip2和GZIP是比较消耗CPU的,[b]压缩[/b]比最高,GZIP不能被分块并行的处理;Snappy和LZO差不多,稍微胜出一点,cpu消耗的比GZIP少。
通常情况下,想在CPU和IO之间取得平衡的话,用Snappy和lzo比较常见一些。
Comparison between compression algorithms
对于数据格式为TextFile,Sequence,以及其他用户自定义的文件格式的文件,都可以采用以上的[b]压缩算法[/b]进行[b]压缩[/b];
TextFile在[b]压缩[/b]以后,不能split,[b]压缩[/b]出来的数据当做job的输入是一个文件作为一个map。SequenceFile本身是分块的,加上lzo的[b]压缩[/b]格式,文件可以实现lzo方式的split操作,可以按照record、block进行[b]压缩[/b],一般采用block效率更高一些。
一、hadoop(hive)对mapreduce[b]压缩[/b]参数设置
1、mapreduce的中间结果对[b]压缩[/b]的支持
方法一:
hadoop 中 mapred-site.xml
<property>
<name>mapred.compress.map.output</name>
<value>true</value>
</property>
<property>
<name>mapred.map.output.compression.codec</name>
<value>com.hadoop.compression.lzo.LzoCodec</value>
</property>
方法二
hive中hive-site.xml
<property>
<name>hive.exec.compress.intermediate</name>
<value>true</value>
<description>Should the outputs of the maps be compressed before being
sent across the network. Uses SequenceFile compression.
</description>
</property>
<property>
<name>hive.intermediate.compression.codec</name>
<value>org.apache.hadoop.io.compress.LzoCodec</value>
<description>If the map outputs are compressed, how should they be
compressed?
</description>
</property>
方法三
hive中shell
set hive.exec.compress.intermediate=true;
set hive.intermediate.compression.codec="org.apache.hadoop.io.compress.LzoCodec";
2、mapreduce的输出结果对[b]压缩[/b]的支持
hive-site.xml中配置:
<property>
<name>hive.exec.compress.output</name>
<value>true</value>
<description>Should the job outputs be compressed?
</description>
</property>
<property>
<name>mapred.output.compression.codec</name>
<value>org.apache.hadoop.io.compress.LzoCodec</value>
<description>If the job outputs are compressed, how should they be compressed?
</description>
</property>
或者在hadoop-site.xml中添加:
<property>
<name>io.compression.codecs</name>
<value>org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.BZip2Codec,org.apache.hadoop.io.compress.LzoCodec</value>
<description>A list of the compression codec classes that can be used
for compression/decompression.</description>
</property>
<property>
<name>mapred.output.compress</name>
<value>true</value>
<description>Should the job outputs be compressed?
</description>
</property>
<property>
<name>mapred.output.compression.codec</name>
<value>org.apache.hadoop.io.compress.LzoCodec</value>
<description>If the job outputs are compressed, how should they be compressed?
</description>
</property>
二、HBASE对这三种[b]压缩[/b]格式的支持
HBase中可以对HFile进行gzip、lzo、snappy方式的[b]压缩[/b]存储。
1、对于gzip[b]压缩[/b]的支持
hbase(main):001:0> create 'testtable', { NAME => 'colfam1',
COMPRESSION => 'GZ' }
或者alter 'testtable',不过要先disable table,完成[b]压缩[/b]后,再enable table
2、对于lzo的支持,需要系统安装lzo动态库,以及hadoop lzo相关的native库,后把native库jar文件copy到hadoop/lib/native 及 hbase/lib/native中
同时在core-site.xml中,配置lzo[b]压缩[/b]
<property>
<name>io.compression.codecs</name>
<value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,com.hadoop.compression.lzo.LzoCodec,com.hadoop.compression.lzo.LzopCodec
</value>
</property>
<property>
<name>io.compression.codec.lzo.class</name>
<value>com.hadoop.compression.lzo.LzoCodec</value>
</property>
org.apache.hadoop.io.compress.DefaultCodec是hadoop默认的zlib[b]压缩[/b]
hbase(main):001:0> create 'testtable', { NAME => 'colfam1',
COMPRESSION => 'lzo' }
3、 对于synappy的支持,需要安装snappy,并且 将 hadoop-snappy-0.0.1-SNAPSHOT.tar.gz 的native中的动态静态链接库文件拷到hadoop以及hbase lib的native下面,将hadoop-snappy-0.0.1-SNAPSHOT.jar考到hadoop
以及hbase 的lib下
在core-site.xml中,配置lzo[b]压缩[/b]
<property>
<name>io.compression.codecs</name>
<value>org.apache.hadoop.io.compress.SnappyCodec
</value>
</property>
hbase(main):001:0> create 'testtable', { NAME => 'colfam1',
COMPRESSION => 'synappy' }
Hadoop中常用的[b]压缩算法[/b]有bzip2、gzip、lzo、snappy,其中lzo、snappy需要操作系统安装native库才可以支持
下面这张表,是比较官方一点的统计,不同的场合用不同的[b]压缩算法[/b]。bzip2和GZIP是比较消耗CPU的,[b]压缩[/b]比最高,GZIP不能被分块并行的处理;Snappy和LZO差不多,稍微胜出一点,cpu消耗的比GZIP少。
通常情况下,想在CPU和IO之间取得平衡的话,用Snappy和lzo比较常见一些。
Comparison between compression algorithms
Algorithm | % remaining | Encoding | Decoding |
---|---|---|---|
GZIP | 13.4% | 21 MB/s | 118 MB/s |
LZO | 20.5% | 135 MB/s | 410 MB/s |
Snappy | 22.2% | 172 MB/s | 409 MB/s |
对于数据格式为TextFile,Sequence,以及其他用户自定义的文件格式的文件,都可以采用以上的[b]压缩算法[/b]进行[b]压缩[/b];
TextFile在[b]压缩[/b]以后,不能split,[b]压缩[/b]出来的数据当做job的输入是一个文件作为一个map。SequenceFile本身是分块的,加上lzo的[b]压缩[/b]格式,文件可以实现lzo方式的split操作,可以按照record、block进行[b]压缩[/b],一般采用block效率更高一些。
一、hadoop(hive)对mapreduce[b]压缩[/b]参数设置
1、mapreduce的中间结果对[b]压缩[/b]的支持
方法一:
hadoop 中 mapred-site.xml
<property>
<name>mapred.compress.map.output</name>
<value>true</value>
</property>
<property>
<name>mapred.map.output.compression.codec</name>
<value>com.hadoop.compression.lzo.LzoCodec</value>
</property>
方法二
hive中hive-site.xml
<property>
<name>hive.exec.compress.intermediate</name>
<value>true</value>
<description>Should the outputs of the maps be compressed before being
sent across the network. Uses SequenceFile compression.
</description>
</property>
<property>
<name>hive.intermediate.compression.codec</name>
<value>org.apache.hadoop.io.compress.LzoCodec</value>
<description>If the map outputs are compressed, how should they be
compressed?
</description>
</property>
方法三
hive中shell
set hive.exec.compress.intermediate=true;
set hive.intermediate.compression.codec="org.apache.hadoop.io.compress.LzoCodec";
2、mapreduce的输出结果对[b]压缩[/b]的支持
hive-site.xml中配置:
<property>
<name>hive.exec.compress.output</name>
<value>true</value>
<description>Should the job outputs be compressed?
</description>
</property>
<property>
<name>mapred.output.compression.codec</name>
<value>org.apache.hadoop.io.compress.LzoCodec</value>
<description>If the job outputs are compressed, how should they be compressed?
</description>
</property>
或者在hadoop-site.xml中添加:
<property>
<name>io.compression.codecs</name>
<value>org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.BZip2Codec,org.apache.hadoop.io.compress.LzoCodec</value>
<description>A list of the compression codec classes that can be used
for compression/decompression.</description>
</property>
<property>
<name>mapred.output.compress</name>
<value>true</value>
<description>Should the job outputs be compressed?
</description>
</property>
<property>
<name>mapred.output.compression.codec</name>
<value>org.apache.hadoop.io.compress.LzoCodec</value>
<description>If the job outputs are compressed, how should they be compressed?
</description>
</property>
二、HBASE对这三种[b]压缩[/b]格式的支持
HBase中可以对HFile进行gzip、lzo、snappy方式的[b]压缩[/b]存储。
1、对于gzip[b]压缩[/b]的支持
hbase(main):001:0> create 'testtable', { NAME => 'colfam1',
COMPRESSION => 'GZ' }
或者alter 'testtable',不过要先disable table,完成[b]压缩[/b]后,再enable table
2、对于lzo的支持,需要系统安装lzo动态库,以及hadoop lzo相关的native库,后把native库jar文件copy到hadoop/lib/native 及 hbase/lib/native中
同时在core-site.xml中,配置lzo[b]压缩[/b]
<property>
<name>io.compression.codecs</name>
<value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,com.hadoop.compression.lzo.LzoCodec,com.hadoop.compression.lzo.LzopCodec
</value>
</property>
<property>
<name>io.compression.codec.lzo.class</name>
<value>com.hadoop.compression.lzo.LzoCodec</value>
</property>
org.apache.hadoop.io.compress.DefaultCodec是hadoop默认的zlib[b]压缩[/b]
hbase(main):001:0> create 'testtable', { NAME => 'colfam1',
COMPRESSION => 'lzo' }
3、 对于synappy的支持,需要安装snappy,并且 将 hadoop-snappy-0.0.1-SNAPSHOT.tar.gz 的native中的动态静态链接库文件拷到hadoop以及hbase lib的native下面,将hadoop-snappy-0.0.1-SNAPSHOT.jar考到hadoop
以及hbase 的lib下
在core-site.xml中,配置lzo[b]压缩[/b]
<property>
<name>io.compression.codecs</name>
<value>org.apache.hadoop.io.compress.SnappyCodec
</value>
</property>
hbase(main):001:0> create 'testtable', { NAME => 'colfam1',
COMPRESSION => 'synappy' }
相关文章推荐
- 关于几种压缩算法以及hadoop和hbase中的压缩配置说明[转]
- 关于几种压缩算法以及hadoop和hbase中的压缩配置说明
- 关于几种压缩算法以及hadoop和hbase中的压缩配置说明
- 关于几种压缩算法以及hadoop和hbase中的压缩配置说明
- 关于几种压缩算法以及hadoop和hbase中的压缩配置说明
- 关于几种压缩算法以及hadoop和hbase中的压缩配置说明
- 为hadoop和hbase配置压缩算法
- java 定时器的几种实现方式以及 配置参数的说明
- 关于Tomcat的点点滴滴(体系架构、处理http请求的过程、安装和配置、文件夹结构、设置压缩和对中文文件名称的支持、以及Catalina这个名字的由来……等)
- 通过tarball形式安装HBASE Cluster(CDH5.0.2)——Hadoop NameNode HA 切换引起的Hbase错误,以及Hbase如何基于NameNode的HA进行配置
- hadoop伪分布环境配置以及hbase 配置
- 关于eclipse里配置tomcat以及在tomcat里载入工程的说明
- hadoop-spark-hive-hbase配置相关说明
- Hive安装配置以及整合HBase和hadoop
- Hadoop HA QJM 与RM的自动容灾 以及hbase与Hadoop HA的 配置ha后hive修改
- 关于STM32的几种输入模式以及外部中断的配置
- Hadoop2.3、 Hbase0.98、 Hive0.13架构中Hive的安装部署配置以及数据测试
- Hadoop压缩算法说明与选择
- hadoop 2.2.X 配置参数说明:hbase-site.xml
- 关于.ravel以及高级算法optimize.fmin_cg说明