如何构建大小无法容纳在RAM中的bloom过滤器?

时间:2018-05-13 10:27:57

标签: hadoop data-structures bigdata

假设我们必须在一台具有32 GB RAM和硬盘驱动器的计算机上构建一个具有10 ^ 12个桶的Bloom过滤器。假设密钥很小并且已经在硬盘上。我们怎么能以有效的方式建造呢? 我的猜测是将Bloom过滤器拆分为4个部分(125GB / 4适合32GB)。然后每次散列数据4次并更新内存中相应的切片。连接4个切片以获得完整的Bloom过滤器。这是对的吗?

1 个答案:

答案 0 :(得分:0)

为什么你需要这么大的过滤器?您是否试图高估它以便处理来自流媒体源的无界数据?如果是,您可以阅读有关Stable Bloom过滤器和Scalable Bloom过滤器的信息。两者都比传统的布隆过滤器更适合这种类型的数据。

要回答您的问题,如果您拆分过滤器,您所说的应该可以正常工作。但要确保正确处理索引。例如,如果4个元素的位向量在2个节点上被分割,则第一个将负责索引(0,1),第二个负责(2,3)。您可能会稍微复杂一点,并将某个范围的映射存储在哪个节点中,并相应地修改读取和写入部分。

您还可以搜索如此分布式Bloom过滤器的实现示例。也许它会给你另一个疑问点,或者你不是从头开始开发你的解决方案,而是能够快速测试它在数据管道中的表现。

在所有情况下,如果您能在此处提供有关如何处理问题以及最终选择其他解决方案的简短反馈,那将会很棒。