2017-10-07 89 views
0

我设计了HBase表,我的rowkey被驱动到我需要运行的查询。遵循最佳实践,我将一个散列部分作为我的rowkeys的前缀,试图在我的表区域尽可能均匀地分散行。在HBase中有效查询的策略

我担心以下情形:

我在3个区之间我的HBase的表拆分了数十亿行的。我使用此表为REST API提供数据,因此,它需要尽可能快地提供行。

不幸的是,我打了著名超时错误Failed to get result within timeout, timeout=60000ms即使我调用要么count "table_name"在HBase的外壳或任何其他的扫描,包括startrowstoprow parameters.It似乎扫描使用rowkey范围正在席卷整个HBase的表。

考虑到这种情况,我想请教两个问题:

1)是否有任何策略要真正检索行的范围内尽可能快地没有击中超时错误?我很欣赏这里的任何指针。

2)由于我是HBase的新手,考虑到搜索实际上是通过一系列rowkeys进行扫描,您认为HBase是最好还是至少可以提供快速检索数据到REST API的解决方案?

回答

1
  1. 增加区域服务器
  2. 数量增加的区域数
  3. 每个区域服务器地区的数量应该是50不多说为了响应速度非常快。
  4. 如果可能,请在群集上的所有数据节点上产生区域服务器。不要孤立运行区域服务器

如果您的数据量不是很大,您可以尝试使用Aerospike最适合的API,因为它提供了毫秒级的获取和放置延迟。

要了解Hbase的详细信息: http://bytepadding.com/hbase/