HBase高效查询的策略
Strategies to query efficiently in HBase
我设计了 HBase table,其中我的 rowkey
被驱动到我需要 运行 的查询。遵循最佳实践,我包含了一个散列部分作为我的行键的前缀,试图在我的 table 区域中尽可能均匀地分布行。
我担心以下情况:
我的 HBase 中有数十亿行 table 分为 3 个区域。我正在使用此 table 为 REST API 提供数据,因此,它需要尽快提供行。
不幸的是,我遇到了著名的超时错误 Failed to get result within timeout, timeout=60000ms
,即使我在 hbase shell 中调用 count "table_name"
或任何其他扫描,包括 startrow
和stoprow
parameters.It 似乎使用 rowkey
按范围扫描正在扫描整个 hbase table。
考虑到这种情况,我想问 2 个问题:
1) 是否有任何策略可以在不遇到超时错误的情况下尽可能快地真正检索行范围?我非常感谢这里的任何指示。
2) 由于我是 HBase 的新手,考虑到搜索实际上是按范围扫描,您认为 HBase 是向 REST API 提供快速检索数据的最佳或至少足够的解决方案吗行键?
- 增加区域服务器数量
- 增加区域数量
- 每个区域服务器的区域数量不应超过 50 个数量级,以实现非常快速的响应。
- 如果可能,请在集群的所有数据节点上生成区域服务器。不要 运行 隔离区域服务器
如果您的数据量不大,您可以尝试使用最适合 API 的 Aerospike,因为它为获取和放置提供毫秒级延迟。
详细了解Hbase :
http://bytepadding.com/hbase/
我设计了 HBase table,其中我的 rowkey
被驱动到我需要 运行 的查询。遵循最佳实践,我包含了一个散列部分作为我的行键的前缀,试图在我的 table 区域中尽可能均匀地分布行。
我担心以下情况:
我的 HBase 中有数十亿行 table 分为 3 个区域。我正在使用此 table 为 REST API 提供数据,因此,它需要尽快提供行。
不幸的是,我遇到了著名的超时错误 Failed to get result within timeout, timeout=60000ms
,即使我在 hbase shell 中调用 count "table_name"
或任何其他扫描,包括 startrow
和stoprow
parameters.It 似乎使用 rowkey
按范围扫描正在扫描整个 hbase table。
考虑到这种情况,我想问 2 个问题:
1) 是否有任何策略可以在不遇到超时错误的情况下尽可能快地真正检索行范围?我非常感谢这里的任何指示。
2) 由于我是 HBase 的新手,考虑到搜索实际上是按范围扫描,您认为 HBase 是向 REST API 提供快速检索数据的最佳或至少足够的解决方案吗行键?
- 增加区域服务器数量
- 增加区域数量
- 每个区域服务器的区域数量不应超过 50 个数量级,以实现非常快速的响应。
- 如果可能,请在集群的所有数据节点上生成区域服务器。不要 运行 隔离区域服务器
如果您的数据量不大,您可以尝试使用最适合 API 的 Aerospike,因为它为获取和放置提供毫秒级延迟。
详细了解Hbase : http://bytepadding.com/hbase/