`

HBASE压缩算法-SNAPPY算法安装

 
阅读更多

 

转自:http://www.cnblogs.com/shitouer/archive/2012/07/09/2583095.html

 

Compression就是在用CPU换IO吞吐量/磁盘空间,如果没有什么特殊原因推荐针对Column Family设置compression,下面主要有三种算法: GZIP, LZO, Snappy,作者推荐使用Snappy,因为它有较好的Encoding/Decoding速度和可以接受的压缩率。

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
Zippy/Snappy 22.2% 172 MB/s 409 MB/s

Snappy已经被Google开源,作为一个压缩库,它可以利用单颗Intel Core i7处理器内核处理至少每秒250MB~500MB的数据流。

Snappy的前身是Zippy。虽然只是一个数据压缩库,它却被Google用于许多内部项目程,其中就包括BigTable,MapReduce和RPC。Google宣称它在这个库本身及其算法做了数据处理速度上的优化,作为代价,并没有考虑输出大小以及和其他类似工具的兼容性问题。Snappy特地为64位x86处理器做了优化,在单个Intel Core i7处理器内核上能够达到至少每秒250MB的压缩速率和每秒500MB的解压速率。

如果允许损失一些压缩率的话,那么可以达到更高的压缩速度,虽然生成的压缩文件可能会比其他库的要大上20%至100%,但是,相比其他的压缩库,Snappy却能够在特定的压缩率下拥有惊人的压缩速度,“压缩普通文本文件的速度是其他库的1.5-1.7倍,HTML能达到2-4倍,但是对于JPEG、PNG以及其他的已压缩的数据,压缩速度不会有明显改善”。

Google极力赞扬Snappy的各种优点,Snappy从一开始就被“设计为即便遇到损坏或者恶意的输入文件都不会崩溃”,而且被Google在生产环境中用于压缩PB级的数据。其健壮性和稳定程度可见一斑。

Snappy也可以用于和其他压缩库-zlib、LZO、LZF、FastLZ和QuickLZ-做对比测试,前提是你在机器上安装了这些压缩库。Snappy是一个C++的库,你可以在产品中使用,不过也有一些其他语言的版本,例如HaskellJavaPerlPythonRuby

Snappy采用新BSD协议开源。

1. 下载snappy代码,编译并安装动态连接库到每台datanode和regionserver上
Build/install Snappy (http://code.google.com/p/snappy/)
./configure
make && make install

2. Build Hadoop Snappy (http://code.google.com/p/hadoop-snappy/)
mvn package

3. 在hdfs中安装snappy
a. 解压 hadoop-snappy-0.0.1-SNAPSHOT.tar.gz 将其中的native中的动态静态链接库文件拷到hadoop lib的native下面,将hadoop-snappy-0.0.1-SNAPSHOT.jar考到hadoop lib下,此过程类似安装lzo.

b. 将一下改动加入到hadoop的core-site.xml中:
<property>
<name>io.compression.codecs</name>
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>

c. 重启动 Hadoop.

4. 将3.a 中的lib拷贝到hbase 的对应lib 和 lib/native 之中,并启动hbase

测试安装是否成功:

1 . 使用 CompressionTest 来查看snappy是否 enabled 并且能成功 loaded:
$ hbase org.apache.hadoop.hbase.util.CompressionTest hdfs://host/path/to/hbase snappy

2 . 创建一章以snappy方式压缩的表来检查能否成功:
$ hbase shell
> create ‘t1′, { NAME => ‘cf1′, COMPRESSION => ‘snappy’ }
> describe ‘t1′

在”describe” 命令输出中, 需要确认 “COMPRESSION => ‘snappy’”

 

 


欢迎关注微信公众号——计算机视觉 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics