`

[Binospace] HBase实战系列1—压缩与编码技术

阅读更多

1、hbase压缩与编码的配置

安装LZO

解决方案:
1)apt-get install liblzo2-dev
2)hadoop-gpl-compression-0.2.0-dev.jar 放入classpath
把libgpl下的共享库文件放入/opt/hbase/hbase/lib/native/Linux-amd64-64/
libgplcompression.a libgplcompression.la libgplcompression.so libgplcompression.so.0 libgplcompression.so.0.0.0
3)配置:
<property>
<name>io.compression.codecs</name>
<value>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>
4)测试:
hbase org.apache.hadoop.hbase.util.CompressionTest hdfs:///user.dat lzo

 
创建表格时,针对ColumnFamily设置压缩和编码方式。
HColumnDescriptor.setCompressionType(Compression.Algorithm.NONE);
HColumnDescriptor.setDataBlockEncoding(DataBlockEncoding.NONE);
 
使用FAST_DIFF 与 LZO之后的压缩情况:
hbase@GS-WDE-SEV0151:/opt/hbase/hbase$ hadoop fs -dus /hbase-weibo/weibo_test
hdfs://hbase-hdfs.goso.cn:9000/hbase-weibo/weibo_test     1021877013
hbase@GS-WDE-SEV0151:/opt/hbase/hbase$ hadoop fs -dus /hbase-weibo/weibo_lzo
hdfs://hbase-hdfs.goso.cn:9000/hbase-weibo/weibo_lzo     1179175365
hbase@GS-WDE-SEV0151:/opt/hbase/ops$ hadoop fs -dus /hbase-weibo/weibo_diff
hdfs://hbase-hdfs.goso.cn:9000/hbase-weibo/weibo_diff     2754679243
hbase@GS-WDE-SEV0151:/opt/hbase/hbase$ hadoop fs -dus /hbase-weibo/weibo-new
hdfs://hbase-hdfs.goso.cn:9000/hbase-weibo/weibo-new     5270708315
 
忽略数据中出现的Delete的数据、多个版本、以及超时的数据,压缩比达到1:5。
单独使用LZO的配置的压缩可接近也接近5:1的压缩比。
单独使用FAST_DIFF编码可以接近5:2的压缩比。
HBase操作过程:
Finish DataBlock–>Encoding DataBlock(FAST_DIFF\PREFIX\PREFIX_TRIE\DIFF)—>Compression DataBlock(LZO\GZ) —>Flush到磁盘。
如果Encoding和Compression的方式都设置NONE,中间的过程即可忽略。
 

2、相关测试

weibo-new使用的NONE、NONE
weibo_test使用的LZO、FAST_DIFF
weibo_diff使用了FAST_DIFF
weibo_lzo使用了LZO压缩
1、测试 扫描的效率:
  个数 耗时
weibo_test 2314054   3m49.661s
weibo-new 2314054   1m55.349s
weibo_lzo 2314054   3m24.378s
weibo_diff 2314054  4m41.792s
 
结果分析:
使用LZO压缩或者FAST_DIFF的编码,扫描时造成大概一倍的开销
这个原因在于:在当前存储容量下,网络IO不是瓶颈,使用基本配置weibo-new吞吐量达到了45.68MB/s,而使用LZO压缩,显然经过一次或者两次解码之后,消耗了一些CPU时间片,从而耗时较长。
 
2、随机读的效率,采用单条随机的办法
 
首先scan出所有的Row,然后,使用shuf -n1000000 /tmp/row 随机取出1000000个row,然后按照单线程随机读的方式获取。
ps:每个Record有3个ColumnFamily,共有31个Column。
 
  个数 耗时
weibo_test 100,0000 122min12s, 平均7.3ms/Record
weibo-new 100,0000 68min40s, 平均3.99ms/Record
weibo_lzo 100,0000 83m26.539s, 平均5.00ms/Record
weibo_diff 100,0000 58m5.915s,  平均3.48ms/Record
 
结果分析:
1)LZO解压缩的效率低于反解码的效率,在不以存储代价为第一考虑的情况下,优先选择FAST_DIFF编码方式。
2)LZO随机读会引起 hbase内部更多的读开销。下图在读取同样数据过程中,通过对于RegionServer上scanner采集到的读取个数,lzo明显代价较大。
 
3)在数据量不超过1T,并且HBase集群内存可以完全cover住整个Cache的情况下,可以不做压缩或者编码的设置,一般带有ROWCOL的bloomfilter基本就可以达到系统最佳的状态。如果数据远远大于Cache总量的10倍以上,优先使用编码方案(FAST_DIFF或者0.96引入的PREFIX_TRIE)
 
 
3、随机写的效率,采用批量写。批量个数为100
  个数 耗时
weibo_test 8640447 571670ms, 66µs/Put, 6.61ms/batch
weibo-new 8640447 329694ms,38.12µs/Put,  3.81ms/batch
weibo_lzo 8640447 295770ms, 34.23µs/Put, 3.42ms/batch
weibo_diff 8640447 250399ms, 28.97µs/Put,2.90ms/batch
 
lz vs diff 写操作的集群吞吐图(两者开始执行的时间起点不同, 绿线代表weibo_diff、红线是weibo_lzo)
 
结论分析:
1)批量写操作,使用FAST_DIFF编码的开销最小,性能比不做任何配置(weibo-new)有24%提升。
2)使用diff,lzo双重配置,批量写操作有较大开销,并且压缩没有比单独使用LZO压缩有明显提升,所以不建议同时使用。

 

3、总体结论分析

1)在column较多、并且value较短的情况下,使用FAST_DIFF可以获得较好的压缩空间以及较优的读写延迟。推荐使用。
 
2)在对于存储空间比较紧缺的应用,单独使用LZO压缩,可以在牺牲一些随机读的前提下获得较高的空间压缩率(5:1)。
 
备注:本系列文章属于Binos_ICTBinospace个人技术博客原创,原文链接为http://www.binospace.com/index.php/hbase-combat-series-1-compression-and-coding-techniques/ ,未经允许,不得在网上转载。
 
 

文章的脚注信息由WordPress的wp-posturl插件自动生成

 

分享到:
评论

相关推荐

    HBase实战-Nick Dimiduk和Amandeep Khurana

    《HBase实战》适合所有对云计算、大数据处理技术和NoSQL数据库感兴趣的技术人员阅读,尤其适合对Hadoop及HBase感兴趣的技术人员参考。阅读《HBase实战》不要求之前具备HBase、Hadoop或者MapReduce方面的知识。

    HBase实战 pdf

    HBase实战

    hbase 资源合集 hbase 企业应用开发实战 权威指南 hbase 实战 hbase 应用架构

    《HBase资源合集》包含了四本重量级的书籍,分别是《HBase企业应用开发实战》、《HBase权威指南》、《HBase实战》以及《HBase应用架构》。这些书籍深入浅出地探讨了HBase在大数据环境中的应用与开发,是学习和掌握...

    hbase实战中文版

    hbase实战,hadoop的数据库管理软件

    《HBase实战》

     《HBase实战》适合所有对云计算、大数据处理技术和NoSQL数据库感兴趣的技术人员阅读,尤其适合对Hadoop及HBase感兴趣的技术人员参考。阅读《HBase实战》不要求之前具备HBase、Hadoop或者MapReduce方面的知识。

    HBase实战(中文扫描版)

    HBase实战(中文扫描版)

    HBase实战.pdf

    HBase实战.pdf 个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!

    HBase学习利器:HBase实战

    数据压缩与缓存**:HBase支持多种数据压缩算法,可以显著减少存储空间的需求。同时,通过缓存机制提高数据读取速度,尤其是在热点数据访问时表现更佳。 **4. 安全性和权限管理**:HBase提供了细粒度的安全控制机制...

    HBase实战_Cn.pdf 完整版

    HBase实战_Cn.pdf 完整版

    Hbase实战 中文版

    《HBase实战》适合所有对云计算、大数据处理技术和NoSQL数据库感兴趣的技术人员阅读,尤其适合对Hadoop及HBase感兴趣的技术人员参考。阅读《HBase实战》不要求之前具备HBase、Hadoop或者MapReduce方面的知识。

    HBase 实战经验分享.pdf

    本文将深入解析HBase的基础概念、需求调研、RowKey设计以及实战案例,帮助读者更好地理解和运用HBase。 首先,我们来看HBase的基础概念。HBase是一种基于Google Bigtable理念设计的开源分布式数据库,它构建于...

    hbase实战中文版PDF

    hbase实战中文版pdf,清晰度较高, 带目录方便阅读~~~~~~

    HBase实战(中文版)

    Hbase实战中文版,适合于想了解面向列数据库和海量数据存储的读者

    Hbase 实战

    **HBase实战** HBase,全称为Apache HBase,是一款高度可扩展的开源数据库,它构建于Hadoop分布式文件系统(HDFS)之上,专为处理海量数据而设计。HBase是NoSQL数据库的一种,主要面向列式存储,提供实时读写能力,...

    hbase实战 PDF

    hbase实战,这是一本具体操作hbase很不错的书

Global site tag (gtag.js) - Google Analytics