【问题标题】:HBase multiple column families performanceHBase 多列族性能
【发布时间】:2017-08-12 22:52:24
【问题描述】:

我有 2 个 HBase 表 - 一个具有单个列族,另一个具有 4 个列族。两个表都由相同的 rowkey 键控,并且列族每个都有一个列限定符,以 json 字符串作为值(每个 json 有效负载大小约为 10-20K)。所有列族都使用 fast-diff 编码和 gzip 压缩。

在向每个表加载大约 60MM 行后,对第二个表中的任何单个列族进行扫描测试需要 4 倍的时间从第一个表中扫描单个列族。请注意,对第二个表的扫描使用 addFamily 将扫描限制为仅 1 个列族,并且两个测试都精确扫描 1MM 行 - 因此两种情况下的净工作负载(以及性能预期)应该相同。但是,测试显示第二个表中的任何列族的时间是第一个表的 4 倍。即使在两个表上运行主要压缩后,性能也没有太大变化。

尽管 HBase 文档和其他技术论坛建议每个表使用的列族不要超过 1 个,但到目前为止,我所读到的任何内容都没有表明扫描性能会根据列族的数量线性下降。有没有其他人经历过这种情况,对此有简单的解释吗?

要注意,第二个表有 4 个列族的原因是,即使我现在一次只扫描一个列族,也需要在给定一组行键的情况下从该表中扫描多个列族。

感谢您对性能问题的任何见解。

【问题讨论】:

  • 您没有告诉我们两种情况下的块缓存配置,我认为这是回答您问题的关键。

标签: apache hadoop hbase nosql


【解决方案1】:

如果我的情况正确,这是正常行为。 由于每个列族代表 RegionServer 上的一个单独 Store,因此访问多个 Store 需要更多时间。

您可以将扫描限制在特定的列族,使用 addFamily 在您的扫描对象上。

【讨论】:

  • 也许我没有说清楚,第二张表的测试是只扫描1个单列族(如你所说使用addFamily)。即便如此,性能还是扫描第一个表中单列族的时间的 4 倍。
猜你喜欢
  • 1970-01-01
  • 2018-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多