【问题标题】:Improving HBase Query Performance提高 HBase 查询性能
【发布时间】:2014-04-04 16:53:02
【问题描述】:

我有一个大约十亿行的巨大 HBase 表,其中包含大约 100 列(每行不同)的数据。

我想尽可能快地根据任何列限定符值查询此数据。

当我们知道 ROW-KEY 但我想根据不同的列值进行查询时,我知道 HBase 已针对快速读取进行了优化。但是应用列过滤器(使用 JAVA API)会导致全表扫描,从而减慢系统速度

我有什么选择?

  • INDEXING:每行中的列都会发生变化。我还能做索引吗?
  • 我是否继续使用 HBase 来存储数据?或者将它与 Solr 或 ElasticSearch 一起使用?
  • 对于基于可能有十亿行的任何列值的随机查询,我可以获得什么样的性能?

欢迎提出其他建议。

【问题讨论】:

    标签: solr indexing elasticsearch hbase real-time


    【解决方案1】:

    在 Hbase 中从行键获取数据很快,但由于没有索引值,因此使用值过滤器进行查询很慢。如果要索引的列数很少,可以考虑反向表索引。

    但是如果你想要更多的东西,比如多条件查询,你应该看看 elasticsearch 并使用它来只存储列上的索引并将数据保存在 hbase 中。不要忘记在创建索引时使用 "_source" : {"enabled" : false} 禁用源存储,所有数据都已经在 hbase 中,不要浪费你的 HDD :)

    【讨论】:

    • 感谢您的回复。如果有数据进入 HDFS,并且我必须运行一些 MR 作业将其推送到我的 HBase 表中,那么在这种情况下,我可以使用 elasticsearch-hadoop 插件将其移动到 ElasticSearch 中吗?
    • 确实如此,或者您可以开发自己的映射器/映射器来索引您的数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-03
    • 1970-01-01
    • 2021-08-03
    • 2013-02-17
    • 2021-12-15
    • 2014-04-09
    相关资源
    最近更新 更多