HBase table 大小在一段时间后减小
HBase table size decreases after period of time
我们在 HBase 中存储数据时遇到了一个问题。我们采取了这样的步骤:
- Spark 应用程序正在处理大 csv 文件(大小:20 G),结果是 hfiles(结果数据大小:180 G)。
- 使用命令创建 table:
'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
批量加载
加载 table 后,大小为 180 G,但是一段时间后(昨天晚上 8 点,两天前早上 8 点左右)启动一个进程,将数据压缩到 14 G .
我的问题是这个进程的名称是什么?那是一个主要的压实吗?因为我正在尝试手动触发压缩(major_compact 和压缩),但这是在未压缩 table:
上启动的命令的输出
hbase(main):001:0> major_compact 'TEST_TYMEK_CRM_ACTION_HISTORY'
0 row(s) in 1.5120 seconds
这是压缩过程。 table 大小差异如此之大,我可以提出以下原因。使用 Spark 应用程序,您不会对 HFile 使用压缩编解码器,因为它在文件创建后指定它。 table 的 HFiles 附件不会改变它的格式(HDFS 中的所有文件都是 immutable)。只有经过压缩过程,数据才会被压缩。您可以通过 HBase UI 监控压缩过程;它通常 运行 在 60000 端口上。
我们在 HBase 中存储数据时遇到了一个问题。我们采取了这样的步骤:
- Spark 应用程序正在处理大 csv 文件(大小:20 G),结果是 hfiles(结果数据大小:180 G)。
- 使用命令创建 table:
'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
批量加载
加载 table 后,大小为 180 G,但是一段时间后(昨天晚上 8 点,两天前早上 8 点左右)启动一个进程,将数据压缩到 14 G .
我的问题是这个进程的名称是什么?那是一个主要的压实吗?因为我正在尝试手动触发压缩(major_compact 和压缩),但这是在未压缩 table:
上启动的命令的输出hbase(main):001:0> major_compact 'TEST_TYMEK_CRM_ACTION_HISTORY'
0 row(s) in 1.5120 seconds
这是压缩过程。 table 大小差异如此之大,我可以提出以下原因。使用 Spark 应用程序,您不会对 HFile 使用压缩编解码器,因为它在文件创建后指定它。 table 的 HFiles 附件不会改变它的格式(HDFS 中的所有文件都是 immutable)。只有经过压缩过程,数据才会被压缩。您可以通过 HBase UI 监控压缩过程;它通常 运行 在 60000 端口上。