为了避免HBase中区域服务器的热点,建议避免使用顺序行键。其中一种方法是对行键的第一个字节进行加盐。我想在我的客户端代码中使用这种技术。
假设我有n
个区域服务器,每个区域服务器最多可以容纳m
个区域。 n*m
将是区域的总数。
x
,第一个字节的值为1 < x <= n*m
。
在写入路径上,当插入数据时,我将随机生成x
的值并将其添加到我的行键中。这应该有助于均匀分配密钥。
问题1:关于盐生成策略,我真的应该更聪明吗?
我需要执行范围扫描(时间序列数据)。由于我的数据分散在多个区域,因此我计划并行n*m
个扫描请求。每个都将在自己的线程中执行。结果返回后,我将在客户端代码中执行聚合。
Q2:有没有办法对这些请求进行分组,以便不是每个区域都进行扫描,而是可以为每个区域服务器执行请求?
我知道Apache Phoenix正在做类似的事情。但我认为他们正在与协处理器实现这一目标。