Parallel processing 如何在分布式系统中删除重复的值?

Parallel processing 如何在分布式系统中删除重复的值?,parallel-processing,mapreduce,distributed-system,Parallel Processing,Mapreduce,Distributed System,假设我们有一个分布式系统,集群中有K台机器。每台机器存储几个整数。我想从系统中删除所有重复的值。因此,如果整数123出现在machine1和machine2中,我们应该在系统中只保留一个123。我该怎么处理 我的想法是,首先让每台机器使用类似桶排序(所有numer都是整数)的方法执行RemovedUpplicate操作,然后让一台机器作为主节点来执行reduce操作。有更好的办法吗?简单的答案是,通过使用分布式哈希环或类似技术确保某个值最终出现在某个节点上,一开始就不会在不同的机器上出现非托管的

假设我们有一个分布式系统,集群中有K台机器。每台机器存储几个整数。我想从系统中删除所有重复的值。因此,如果整数123出现在machine1和machine2中,我们应该在系统中只保留一个123。我该怎么处理


我的想法是,首先让每台机器使用类似桶排序(所有numer都是整数)的方法执行RemovedUpplicate操作,然后让一台机器作为主节点来执行reduce操作。有更好的办法吗?

简单的答案是,通过使用分布式哈希环或类似技术确保某个值最终出现在某个节点上,一开始就不会在不同的机器上出现非托管的重复值

如果这还不够好,我会研究启发式优化。由于您在不同的计算机上已经有多个拷贝,我假设您希望消除这些值以获得一点额外的性能,而不是应用程序的正确性

如果是这种情况,让每个节点缓慢地通过其键空间(节点上的foreach整数),并询问所有其他节点是否具有相同值的副本。如果他们这样做了,我们将对其进行重复数据消除。如果有人没有反应(足够快);忽略它们并继续。这允许使用分散的重复数据消除算法来处理节点故障,并且可以以任何速度运行,从而在需要时对更重要的流量进行优先级排序


我猜密钥是根据幂律分布访问的,因此更频繁地浏览最常用的更新密钥可能会更有效,但这并不能保证

不确定您感兴趣的系统类型,但如果选择共享内存,您可以保留计数器阵列。由于所有数字都是整数,因此可以标记此共享数组中出现的每个整数。此外,如果已标记此整数,则将其删除。这将导致对接收到的每个整数进行o(k)运算,并且没有重复

你的问题很有意思,但不幸的是,你的问题很宽泛,离题了。然而,它主要是关于良好的分区,它应该在整个网络中洗牌数据,并进行排序,而不是以较低的上界复杂度映射分区,然后按尾数减少整数用于什么以及预期的输出是什么?