如何在现有 Hbase table 上启用压缩?

How to enable compression on an existing Hbase table?

我有一个非常大的 Hbase table apData,但它在创建时没有设置为压缩。现在是 1.5TB。所以我想在此 table 上启用压缩功能。我做了以下事情:

(1)disable apData
(2)alter apData,{NAME=>'cf1',COMPRESSION=>'snappy'}
(3)enable 'apData'.

但是当我使用"desc apData"查看配置时,它仍然显示:

COMPRESSION => 'NONE'

为什么没有生效?请问table应该怎么压缩,还要保证以后插入的数据会自动压缩

提前致谢!

您需要配置 HBase 才能使用 Snappy。

您可以按照参考文献 link 中提到的步骤在 hbase 中启用 snappy 压缩: configure snappy compression with HBase

希望对您有所帮助。

如果我们从 tarball 安装 Hadoop 和 HBase,我们需要配置 HBase 以使用 Snappy;如果我们从 RPM 或 Debian 包安装它们,Snappy 不需要 HBase 配置。

根据我们正在安装的机器的体系结构,我们必须将以下行之一添加到 /etc/hbase/conf/hbase-env.sh:

For 32-bit platforms:
export HBASE_LIBRARY_PATH=/usr/lib/hadoop/lib/native/Linux-i386-32

For 64-bit platforms:
export HBASE_LIBRARY_PATH=/usr/lib/hadoop/lib/native/Linux-amd64-64

HBase 只会压缩 new HFiles - 您写入的新数据或压缩的结果

你配置 Snappy 了吗? 验证第一个 snappy 是否已加载到所有节点中。要验证请使用此命令。

hbase org.apache.hadoop.hbase.util.CompressionTest hdfs://host/path/to/hbase snappy

一旦 snappy 测试成功。上面提到的压缩应该可以工作。

有关 snappy 的配置和安装的更多详细信息: http://hbase.apache.org/0.94/book/snappy.compression.html