如何构建大小不适合ram的bloom过滤器?

ttp71kqs  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(315)

假设我们必须在一台具有32gbram和硬盘驱动器的机器上构建一个具有10^12个存储桶的bloom过滤器。假设密钥很小,并且已经在硬盘上了。我们怎样才能有效地构建它?
我的猜测是将bloom过滤器分成4部分(125gb/4适合32gb)。然后每次传递4次数据,散列并更新内存中相应的片。连接4片回来得到完整的布鲁姆过滤器。是这样吗?

rseugnpd

rseugnpd1#

你为什么需要这么大的过滤器?为了处理来自流媒体源的无限数据,您是否试图高估它?如果是,您可以阅读关于稳定的bloom过滤器和可伸缩的bloom过滤器。两者都比经典的bloom过滤器更适合这种类型的数据。
为了回答你的问题,如果你分开你的过滤器,你告诉什么应该工作。但要确保正确处理索引。例如,如果4个元素的位向量在2个节点上被拆分,那么第一个节点负责索引(0,1),第二个节点负责索引(2,3)。您可能会使它复杂一点,并将什么范围的Map存储在什么节点中,并相应地修改读写部分。
您还可以搜索so分布式bloomfilter的实现示例。也许它会给你另一个疑问点,或者,你不必从头开始开发你的解决方案,你可以快速测试它在你的数据管道中的行为。
在任何情况下,如果你能在这里给出简短的反馈,说明你是如何处理这个问题的,如果你最终选择了另一个解决方案,那就太好了。

相关问题