HBase多列系列性能

时间:2017-08-12 22:52:25

标签: apache hadoop hbase nosql

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

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

尽管HBase doc和其他技术论坛建议每个表不使用超过1个列系列,但到目前为止我所读到的内容并未表明扫描性能会根据列族数量线性降低。有没有其他人经历过这个,有一个简单的解释吗?

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

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

1 个答案:

答案 0 :(得分:1)

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

您可以将扫描限制为特定列系列,请使用 您的扫描对象上有addFamily