gpt4 book ai didi

hadoop - 重复键过滤

转载 作者:可可西里 更新时间:2023-11-01 14:44:52 33 4
gpt4 key购买 nike

我正在寻找一种分布式解决方案来实时筛选/过滤大量 key 。我的应用程序每天生成超过 1000 亿条记录,我需要一种方法来从流中过滤重复项。我正在寻找一个系统来存储滚动 10 天的 key ,每个 key 大约 100 字节。我想知道在使用 Hadoop 之前如何解决这种类型的大规模问题。 HBase 是正确的解决方案吗?有没有人尝试过像 Zookeeper 这样的部分内存解决方案?

最佳答案

我可以看到许多解决您问题的方法,但实时要求确实缩小了范围。您所说的实时是指您想要查看 key 在创建时是否重复?

让我们谈谈每秒的查询数。你说 100B/天(很多,恭喜!)。那是每秒 115 万次查询 (100,000,000,000/24/60/60)。我不确定 HBase 是否可以处理。您可能想考虑像 Redis(可能是分片的)或 Membase/memcached 或类似的东西。

如果您要在 HBase 中执行此操作,我会简单地将超过一万亿个键(10 天 x 100B 键)作为表中的键,并在其中放入一些值来存储它(因为您有到)。然后,你可以做一个 get 来弄清楚 key 是否在里面。这是一种 hokey,并没有充分利用 hbase,因为它只是充分利用了键空间。因此,在这种情况下,HBase 实际上是一个 b 树服务。我认为这不是个好主意。

如果你放宽限制不必做实时,你可以批量使用 MapReduce 去重。这很简单:它只是没有计数的字数统计。你按你拥有的键分组,然后如果返回多个值,你会在 reducer 中看到重复项。有了足够多的节点和足够多的延迟,您就可以有效地解决这个问题。以下是 MapReduce 设计模式一书中的一些示例代码:https://github.com/adamjshook/mapreducepatterns/blob/master/MRDP/src/main/java/mrdp/ch3/DistinctUserDriver.java

ZooKeeper 用于分布式进程通信和同步。您不想在 zookeeper 中存储数万亿条记录。

因此,在我的观点中,您最好使用内存中的键/值存储(例如 Redis),但您很难在内存中存储那么多数据。

关于hadoop - 重复键过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20126595/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com