在HBase中存储数据存在一个问题。我们已采取以下步骤:

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

    加载表后,大小为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
    

    最佳答案

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

    10-01 21:44
    查看更多