HBase列系列:有多少?
可能有很多类似的问题,但它们并不能回答我的情况(至少我没能抓住要点)HBase列系列:有多少?,hbase,Hbase,可能有很多类似的问题,但它们并不能回答我的情况(至少我没能抓住要点) 我有一个HBase表,有4个列族。主要原因是每个列族具有不同的版本属性(非常不同) 所有族的所有列都存储的不是大数据(例如全文),而是平均1KB(长标识符、一些短字符串、整数等) 我需要以几种方式访问数据:按列族扫描和获取,按版本(特定版本或范围)获取给定行的所有单元格,最后但并非最不重要的是:获取给定行所有列的最新版本 那么,在这种情况下,4列族的缺点是什么?读取是否因为在不同的存储文件上操作(如果该行不在内存中)而效率
- 我有一个HBase表,有4个列族。主要原因是每个列族具有不同的版本属性(非常不同)
- 所有族的所有列都存储的不是大数据(例如全文),而是平均1KB(长标识符、一些短字符串、整数等)
- 我需要以几种方式访问数据:按列族扫描和获取,按版本(特定版本或范围)获取给定行的所有单元格,最后但并非最不重要的是:获取给定行所有列的最新版本
那么,在这种情况下,4列族的缺点是什么?读取是否因为在不同的存储文件上操作(如果该行不在内存中)而效率较低 根据Apache HBase wiki,HBase将面临超过2或3个列族的性能问题。列族背后的想法非常好-不幸的是,当前的HBase实现无法很好地处理许多列族。基本上,如果您有完全不同的访问模式,您应该尝试坚持使用一种模式,并添加第二种模式。也看到
您可以做的是将不同的“族”保留为具有不同前缀的列。HBase是稀疏的,因此不会占用更多的空间,如果需要,您仍然可以在扫描时获得一个带有columnPrefix筛选器的“系列”HBase中的列系列数量有限制。每个列族有一个MemStore(它是一个写缓存,在将新数据写入Hfiles之前存储新数据),当一个列族满时,它们都会刷新
添加的列族越多,创建的MemStore就越多,MemStore刷新也就越频繁。这将降低性能。当MemStore积累足够的数据时,整个排序集将写入HDFS中的新HFile。HBase为每个列族使用多个HFiles,其中包含实际单元格或KeyValue实例。这些文件是随着时间的推移创建的,因为在MemStores中排序的KeyValue编辑将作为文件刷新到磁盘 请注意,这是限制HBase中列族数量的原因之一。每个CF有一个MemStore;一个人吃饱了,他们都会脸红。它还保存最后写入的序列号,以便系统知道到目前为止保存了什么。添加的列族越多,创建的MemStore就越多,MemStore刷新也就越频繁