假设我在我的分布式系统中的每个worker上运行以下代码并使用主从架构:
for (i in set1) {
for (j in set2) {
//Some computation based on i, j
//Store the results in some data structure for each i, j
}
}
现在每个工作人员将每个i,j
的结果集发送给主人,这会累积所有工作人员的结果('减少'对每个i,j
对的结果)。
现在set1, set2
的大小太高,导致无法在worker上运行嵌套循环,并为所有可能的i,j生成值,并将它们发送给master。我正在考虑流式传输中间结果。有关分发此嵌套循环结构的任何建议。
注意:每个工作人员都有自己的集合副本:set1, set2
。此外,我们没有对每个工人返回的i,j
对进行任何排序。
我们只知道唯一i,j
对的数量不能适合任何单个节点(甚至不是主节点)的内存。
寻找针对此类用例设计的算法的建议。