HBase 表大小在一段时间后减小

Posted

技术标签:

【中文标题】HBase 表大小在一段时间后减小【英文标题】:HBase table size decreases after period of time 【发布时间】:2017-08-24 15:05:55 【问题描述】:

我们在 HBase 中存储数据时遇到了一个问题。我们已经采取了这样的步骤:

    Spark 应用程序正在处理大 csv 文件(大小:20 G),结果是 hfiles(结果数据大小:180 G)。 使用命令创建表:'TABLE_NAME', 'NAME'=>'cf', 'COMPRESSION'=>'SNAPPY' 来自创建的 hfile 的数据通过命令 hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles -Dhbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily=1024 hdfs://ip:8020/path TABLE_NAME 批量加载

在加载表后立即大小为 180 G,但在一段时间后(昨天是晚上 8 点,两天前是早上 8 点左右)启动了一个进程,将数据压缩到 14 G 大小。

我的问题是这个过程的名称是什么?这是一个主要的压实吗?因为我正在尝试手动触发压缩(major_compact 和 compact),但这是在未压缩表上启动的命令的输出:

hbase(main):001:0> major_compact 'TEST_TYMEK_CRM_ACTION_HISTORY'
0 row(s) in 1.5120 seconds

【问题讨论】:

【参考方案1】:

这是压缩过程。我可以建议以下原因导致表格大小差异如此之大。使用 Spark 应用程序,您不会对 HFile 使用压缩编解码器,因为它会在文件创建后指定它。表的 HFiles 附件不会改变它的格式(HDFS 中的所有文件都是不可变的)。只有在压缩过程之后,数据才会被压缩。您可以通过 HBase UI 监控压缩过程;它通常在 60000 端口上运行。

【讨论】:

以上是关于HBase 表大小在一段时间后减小的主要内容,如果未能解决你的问题,请参考以下文章

雪花中的查询结果大小

HBase 表大小比 hadoop hdfs 中的文件大得多

MySQL 数据库中的 WP_Options 表超过 360Mb - 我可以通过删除 WC_sessions 来减小大小吗?

手动更改表中的varchar大小后如何同步Flyway迁移文件?

如何收缩表空间

对已经存在的hbase表修改压缩方式