language-agnostic - 如何在点对点系统中增强但最低限度地分发项目

标签 language-agnostic distributed machine-learning p2p fault-tolerance

如果一个人有一个可以查询的点对点系统,人们会愿意

  • 减少网络上的查询总数(通过广泛分发“流行”项目并将“相似”项目放在一起)
  • 避免每个节点存储过多
  • 在遇到客户端停机、硬件故障和用户离开的情况下,即使是中等稀有的元素也能确保良好的可用性(可能为文件管理员/历史学家检测稀有元素)
  • 避免在网络分区时查询无法找到匹配项

考虑到这些要求:

  1. 有任何标准方法吗?如果没有,是否有任何受人尊敬的实验性研究?我熟悉一些分配方案,但我还没有看到任何真正解决学习鲁棒性的问题。
  2. 我是否遗漏了任何明显的标准?
  3. 有人有兴趣研究/解决这个问题吗? (如果是这样,我很乐意开源我这个周末组装的一个非常蹩脚的模拟器的一部分,并且通常提供无用的建议)。

@cdv:我现在已经观看了该视频,它非常好,虽然我不认为它完全达到了可插入的分发策略,但它绝对是 90% 的方法。然而,这些问题强调了这种方法的有用差异,解决了我的一些进一步的担忧,并为我提供了一些后续引用。因此,我暂时接受您的回答,尽管我认为这个问题是开放的。

最佳答案

有多个系统可以满足您所寻求的不同方面,并且每个系统都会做出不同的妥协,包括但不限于:

亚马逊的 Dynamo:http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf

凯:http://www.slideshare.net/takemaru/kai-an-open-source-implementation-of-amazons-dynamo-472179

Hadoop:http://hadoop.apache.org/core/docs/current/hdfs_design.html

和弦:http://pdos.csail.mit.edu/chord/

hive :http://www.cs.cornell.edu/People/egs/beehive/

还有很多其他的。按照这些思路构建自定义系统后,我也以开源形式发布了一些构建 block :http://code.google.com/p/distributerl/ (这不是一个完整的系统,而是一些可用于构建系统的库)

关于language-agnostic - 如何在点对点系统中增强但最低限度地分发项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37296/

相关文章:

java - Zookeeper 的真实使用

c++ - LGPL 机器学习与随机森林 - C++

pandas - Imputer 减少了我的数据框中列的大小

oop - 您如何向 CS 101 学生定义多态性?

java - 如何执行随机算法

algorithm - 分布式数据并行前十算法

math - float 学有问题吗?

database - 寻找二进制数据的快速分布式持久键值数据库

distributed - 分布式项目管理/错误跟踪

python-3.x - 为什么我的 Keras 模型在 Iris 数据集上表现如此糟糕?