首页 文章

HBase列系列:有多少?

提问于
浏览
9

可能有很多类似的问题,但他们不回答我的情况(至少我不能明白这一点) .

  • 我说,我有一个HBase中有4个列族的表 . 主要原因是每个列族具有不同的VERSIONS属性(非常不同) .

  • 所有系列的所有列都不存储大数据(例如fulltexts),但平均为1KB(标识符为long,一些短字符串,整数等)

  • 我需要以多种方式访问数据:按列系列扫描和获取,按版本(特定版本或范围)获取给定行的所有单元格,最后但并非最不重要:获取给定行的所有列的最新版本行 .

那么,在这种情况下,有4个列族的缺点是什么?读取是否效率较低,因为它们在不同的存储文件上运行(如果行不在内存中)?

3 回答

  • 10

    列族背后的想法很棒 - 不幸的是,目前的HBase实现并不能很好地处理很多列族 . 基本上,如果你有完全不同的访问模式,你应该尝试坚持使用一个并添加一秒 . 另见HBase manual

    您可以做的是将不同的“家庭”保留为具有不同前缀的列 . HBase是稀疏的,所以它不会占用更多空间,如果你需要,你仍然可以在扫描中只使用一个带有columnPrefix过滤器的“系列”

  • 5

    HBase中的列族数有限制 . 每个Column Family有一个MemStore(它是一个写入缓存,可以在将数据写入Hfiles之前存储新数据),当一个已满时,它们都会刷新 .

    添加列族的次数越多,创建的MemStore就越多,Memstore刷新次数也会越来越频繁 . 它会降低性能 .

  • 8

    根据Apache HBase wiki,Hbase将面临超过2或3个列系列的性能问题 .

相关问题