Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HBase列系列:有多少?_Hbase - Fatal编程技术网

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刷新也就越频繁