HBase开启Snappy压缩

原文链接:http://www.kissyu.org/2016/10/06/HBase%E5%BC%80%E5%90%AFSnappy%E5%8E%8B%E7%BC%A9/

背景

HBase是目前主流的Nosql数据库之一,由于其优秀的水平扩展能力,业界常将其用来存储海量级的数据。在我们使用HBase的时候,为了节省服务器的存储成本,建议开启HBase的数据压缩特性。主流的HBase压缩方式有LZO和Snappy,Snappy的压缩比会稍微优于LZO。需要注意的是,Snappy是需要单独下载并编译安装的,此过程不在本文讨论范文之内,本文主要介绍如何通过HBase shell来开启Snappy压缩。

步骤

指定Snappy的场景有两种:

  1. 创建时指定格式。
  2. 修改已经创建好的列族的压缩格式。

创建

我们可以在一开始创建表的时候就指定Snappy压缩格式:

hbase> create 'test', { NAME => 'c', COMPRESSION => 'SNAPPY' }
hbase> describe 'test'
Table test is ENABLED
test
COLUMN FAMILIES DESCRIPTION
{NAME => 'c', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'SNAPPY', MIN_VERSIONS => '0', TTL => 'FOREVER', KEEP
_DELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}



修改通过describe,我们可以看到test表的压缩格式为SNAPPY。

假设我们已经有了一张表,并且表里也有了数据,我们照样可以在表上添加Snappy压缩格式。

我们以test表为例

  1. 我们先创建一张不含任何压缩格式的test表,并且向其导入10多G的数据:

           
           
    1
    2
           
           
    $ hadoop fs -du -h /hbase/data/default/
    12.2 G /hbase/data/default/test

    我们可以看到,在未压缩之前,test表的数据在hdfs上一共占用了12.2G的磁盘空间。

  2. 然后disable test表:

           
           
    1
           
           
    hbase> disable 'test'
  3. 修改压缩格式:

           
           
    1
           
           
    hbase> alter 'test', NAME => 'c', COMPRESSION => 'snappy'

    需要注意的是,修改压缩格式时,必须一个列族一个列族的改。

  4. enable test表:

           
           
    1
           
           
    hbase> enable 'test'
  5. enable之后,还需要做一次大合并才能让压缩格式生效:

           
           
    1
           
           
    hbase> major_compact 'test'

    需要注意的是,千万不要在表繁忙期间执行大合并操作。

  6. describe test表看一下有没有生效:


  7. hbase> describe 'test'
    Table test is ENABLED
    test
    COLUMN FAMILIES DESCRIPTION
    {NAME => 'c', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'SNAPPY', MIN_VERSIONS => '0', TTL => 'FOREVER', KEEP
    _DELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}


  8. 最后我们看一下,开启了Snappy之后的压缩比:

           
           
    1
    2
           
           
    $ hadoop fs -du -h /hbase/data/default/
    8.1 G /hbase/data/default/test

    我们可以看到将近压缩了33%,还是十分可观的。

总结

本文主要介绍了如何利用HBase shell在表上开启Snappy压缩。通过实践表明,Snappy拥有较高的压缩比。通过开启Snappy压缩,企业可以极大地节省磁盘存储成本,尤其是当企业采用SSD存储时,节省的成本将会更多。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值