【问题标题】:Nifi Hbase data insertion taking more space than original dataNifi Hbase数据插入比原始数据占用更多空间
【发布时间】:2021-11-23 11:21:25
【问题描述】:

我正在使用 Nifi 实时进行数据转换,处理后的数据存储在 Hbase 中。我正在使用puthbasejson 将数据存储在 hbase 中。在存储row key/id时,我使用的是uuid。但是在 nifi 数据来源或在线工具中单个 JSON 的原始数据大小为 390 字节。但是1500万条数据需要55GB,单条记录的数据量是3.9KB。

所以,我不知道数据是如何存储的,为什么存储在 hbase 中的数据大小大于原始数据大小以及如何在 Hbase 和 Nifi 中减少或优化(如果需要任何更改)。

JSON:

{"_id":"61577d7aba779647060cb4e9","index":0,"guid":"c70bff48-008d-4f5b-b83a-f2064730f69c","isActive":true,"balance":"$3,410.16","picture":"","age":40,"eyeColor":"green","name":"Delia Mason","gender":"female","company":"INTERODEO","email":"deliamason@interodeo.com","phone":"+1 (892) 525-3498","address":"682 Macon Street, Clinton, Idaho, 3964","about":"","registered":"2019-09-03T06:00:32 -06:-30"}

在 nifi 中重现的步骤:

generate flowfile--->PuthbaseJSON(uuid rowkey)

更新1: 存储在 hbase 中的数据:

【问题讨论】:

  • 你能查询一下hbase数据看看到底有什么吗?
  • @OneCricketeer 感谢您的回复!!,我已经使用问题中的扫描命令更新了存储在 hbase 中的数据的屏幕截图。
  • 看来你在重复数据
  • 好吧,好吧,Hbase生成一个row key和字符串“details”,加上每个json键/值对的时间戳,那为什么大小不会比你输入的大呢?
  • 而且,当我测试单个 json 的大小=(表大小,以字节为单位)/(数据包数)时。因此,对于 10,000,值是 300 字节,然后对于 1000 万,是 3kb,我不明白为什么它会增加。对于这些表,我启用了快速压缩,否则它会占用比上述值更多的空间。

标签: hadoop hbase apache-nifi


【解决方案1】:

我认为您可能会感到惊讶的主要事情是 Hbase 将表的每一列都存储为单独的记录。

假设您的 UUID 平均为 40 个字符,字段 1、2 和 3 可能每个平均为 5,并且可能添加长度为 15 的时间戳。

现在您最初将拥有大小为 40+5+5+5+15 = 70 的数据量 根据屏幕截图每行存储后,三列将变为 3*(40+5+15)=180,如果您有更小或更多的字段,这种效果会增加。

我从你的截图和这篇文章中得到了这个理解:https://dzone.com/articles/how-to-improve-apache-hbase-performance-via-data-s

现在,如果您想减少占用空间,显而易见的方法是减少开销。我相信这篇文章推荐序列化,但也许也可以简单地将整个 json 主体放在一列中,具体取决于您计划如何访问它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-29
    • 1970-01-01
    • 2011-09-04
    • 2013-05-14
    • 2011-09-07
    • 2012-07-08
    • 2018-08-12
    相关资源
    最近更新 更多