当前,我们有一个行键,它是:MAC + REVERSED_TS
这里的问题是,DHCP质疑的所有正在进行的mac addr都在单个区域服务器中,但是hbase有3个节点。
想知道我们如何将这些mac addr公平地分散在所有区域服务器上,并避免将正在进行的mac addr放在一个区域服务器上
我认为盐腌似乎是一种策略,有人对此有解决方案吗?
答案 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,因为数据将被写入您所有的区域服务器。