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 来减小大小吗?