我们如何在所有区域服务器上平均分配地址

时间:2019-08-21 05:40:32

标签: hbase

当前,我们有一个行键,它是:MAC + REVERSED_TS

这里的问题是,DHCP质疑的所有正在进行的mac addr都在单个区域服务器中,但是hbase有3个节点。

想知道我们如何将这些mac addr公平地分散在所有区域服务器上,并避免将正在进行的mac addr放在一个区域服务器上

我认为盐腌似乎是一种策略,有人对此有解决方案吗?

1 个答案:

答案 0 :(得分:0)

Salt的工作方式如下:每当创建行键时,都在前面手动添加一个0-9之间的随机数(例如)2+MAC+REVERSED_TS

然后,确保将HBase表拆分为以下数字:

create 'mac-records','a', SPLITS=> ['1', '2', '3', '4', '5', '6', '7', '8', '9']

您将要根据群集的大小更改拆分(例如,如果只有三个节点,则将有三个拆分)。

缺点是,每当您要检索MAC地址时,都必须运行十个查询,因为您不知道它位于哪个存储桶中。如果同时运行所有十个存储桶,这不会影响性能。例如,您将运行:

scan 'mac-records', { FILTER => "PrefixFilter('0+MAC')"}
scan 'mac-records', { FILTER => "PrefixFilter('1+MAC')"}
scan 'mac-records', { FILTER => "PrefixFilter('2+MAC')"}
...
scan 'mac-records', { FILTER => "PrefixFilter('9+MAC')"}

这可以防止hotspotting,因为数据将被写入您所有的区域服务器。