什么是更有效的hbase性能,相同结构的多个表或包含大量数据的单个表?

时间:2017-08-31 15:15:00

标签: hadoop namespaces hbase

我之前创建了一个项目,通过为每天创建一个表来存储RDMS中特定实体的每日数据,而不是在该表中存储当天的数据。

但现在我想将我的数据库从RDMS转移到HBase。所以我的问题是我是否应该创建一个表并存储该表中所有日期的数据,或者我应该使用我之前为每天创建单个表的概念。我想根据hbase的性能比较两种情况。 / p>

对不起,如果这个问题对你来说似乎很愚蠢。谢谢你

1 个答案:

答案 0 :(得分:2)

如你所说,有2个选项

  

选项1:所有日期数据的单表
  选项2:多个表

如果你有大量的单日数据,我更喜欢命名空间(在版本0.96中引入是一个非常重要的功能)和选项2。这也将支持多租户要求......

请参阅Hbase Book

  
      
  • 命名空间是类似于关系数据库系统中的数据库的表的逻辑分组。这种抽象奠定了基础   即将推出的多租户相关功能:配额管理(HBASE-8410)
  •   
  • 限制命名空间可以使用的资源量(即区域,表)。
  •   
  • 命名空间安全管理(HBASE-9206) - 为租户提供另一级别的安全管理。
  •   
  • 区域服务器组(HBASE-6721) - 可以将命名空间/表固定到 - RegionServers的子集上,从而保证课程级别为   隔离。
  •   
     

下面是命令w.r.t.命名空间

alter_namespace, create_namespace, describe_namespace, 
drop_namespace, list_namespace, list_namespace_tables

优势:

  • 即使您使用列过滤器,由于其数据(每日数据)较少,与单表方法相比,全表扫描的数据检索速度快(大表上的全扫描成本高)
  • 如果您想要在特定表格上进行身份验证和授权,那么它也可以获得。

限制 :最终会有多个脚本来管理表而不是单个脚本(选项1)

注意:在上面提到的任何选项中,你的rowkey设计对于提高性能而言非常重要。防止热点。

有关详细信息,请查看hbase-series