1. 程式人生 > >HBase開啟Snappy壓縮

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的資料:

    12 $ 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之後的壓縮比:

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

    我們可以看到將近壓縮了33%,還是十分可觀的。

總結

本文主要介紹瞭如何利用HBase shell在表上開啟Snappy壓縮。通過實踐表明,Snappy擁有較高的壓縮比。通過開啟Snappy壓縮,企業可以極大地節省磁碟儲存成本,尤其是當企業採用SSD儲存時,節省的成本將會更多。