我对学习分布式计算技术感兴趣.作为Java开发人员,我可能愿意从Hadoop开始.你能推荐一些书籍/教程/文章吗?
假设发生网络分区并且领导者 A 占少数。Raft 会选出一个新的领导者 B,但 A 认为它仍然是领导者一段时间。我们有两个客户。客户端 1 将键/值对写入 B,然后客户端 2 在 A 下台之前从 A 读取键。因为 A 仍然相信它是领导者,所以它会返回陈旧的数据。
原论文说:
其次,领导者必须在处理只读请求之前检查它是否已被废黜(如果选举了最近的领导者,则其信息可能会过时)。Raft 通过在响应只读请求之前让领导者与集群的大多数人交换心跳消息来处理这个问题。
是不是太贵了?领导者必须为每个读取请求与多数节点交谈?
我被BOINC吸引到了我的一个小项目.我听说过BOINC,但没有多看它是如何工作的,主要是因为我现在正专注于其他优先事项.我想知道的是,如果你们中的任何人真的试图为BOINC编程并且在分布式计算机网络上运行程序.我特别感兴趣的是以下问题:
我更喜欢现实生活.维基百科可以是一个很好的信息来源,但我更喜欢实际的用例.
任何人都知道云中的位置,您可以创建(虚拟)机器(如Amazon EC2)用于计算任务 - 提供数量(至少5-10)个免费计算机的位置,如果它们用于测试打开源项目?
我不是免费为开源项目寻找像Jenkins,Hudson,TeamCity等CI环境的地方.我正在寻找一个可以运行某些服务器的地方,我可以在集群和分布式环境中设置开源系统.然后从自动化测试(例如,从CI环境执行)开始针对该集群和分布式环境的测试.
open-source distributed-computing cluster-computing virtual-machine
跟进我之前的问题:
为API客户端提供1,000,000个数据库结果的好方法是什么?
我们目前正在使用PostgreSQL.一些建议的方法:
我没有想到的是愚蠢的简单和比任何这些选项更好的方式?
我见过的Akka演员的大部分用例都是高性能的多核服务器或本地集群.
我很好奇它适用于更远程的高延迟和高度失败的群体结构,如p2p网络.
我想到的应用程序将有关于群集节点的可信性和/或资源丰富性的规则,给予它们一些状态,就像bittorrent一样.它还需要能够尽可能地在整个群体中传播交易,但最终或部分一致性是可以接受的.可伸缩性比一致性更重要.
AKKA是建立这样的东西的潜在解决方案吗?它会比其他方法有任何特定的优点或缺点.
java scala distributed-computing distributed-transactions akka
我正在阅读如何使用概率数据结构count-min-sketch来查找数据流中的前 k 个元素。但我似乎无法理解我们维护堆以获得最终答案的步骤。
问题:
我们有一个项目流
[B, C, A, B, C, A, C, A, A, ...]。我们被要求找出前 k 个最常出现的项目。
我的理解是,这可以使用微批处理来完成,在微批处理中,我们在开始做一些实际工作之前积累 N 个项目。
hashmap +heap方法对我来说很容易理解。我们遍历微批次并{B:34, D: 65, C: 9, A:84, ...}通过计算元素来构建频率图(例如 )。然后,我们通过遍历频率图来维护大小为 k 的最小堆,根据[item]:[freq]需要向堆添加和从堆中删除。足够简单,没有什么花哨的。
现在使用CMS+heap,而不是哈希图,我们有了这个概率有损二维数组,我们通过遍历微批次来构建它。问题是:给定这个 CMS,我们如何维护大小为 k 的最小堆?
CMS只包含一堆数字,而不是原始项目。除非我还保留微批次中的一组独特元素,否则我无法知道最后需要针对哪些项目构建堆。但如果我这样做,那不是违背了使用CMS节省内存空间的目的吗?
我还考虑过在遍历列表时实时构建堆。随着每个项目的进入,我们可以快速更新 CMS 并获取该项目在该点的累积频率。但这个频率数字是累积的这一事实对我没有多大帮助。例如,通过上面的示例流,我们将得到[B:1, C:1, A:1, B:2, C:2, A:2, C:3, A:3, A:4, ...]. 如果我们使用相同的逻辑来更新我们的最小堆,我们将得到不正确的答案(有重复)。
我肯定在这里遗漏了一些东西。请帮助我理解。
real-time frequency distributed-computing stream count-min-sketch
我注意到文档没有这个功能。因此,不清楚应该在哪里调用它。是否必须:
请注意,有一个 gitissue 请求将此函数放在文档中: https: //github.com/pytorch/pytorch/issues/48203
这是 2 含义的示例:
def test_setup():
print('test_setup')
if torch.cuda.is_available():
world_size = torch.cuda.device_count()
else:
world_size = 4
master_port = find_free_port()
mp.spawn(setup_process, args=(world_size, master_port), nprocs=world_size)
dist.destroy_process_group()
print('successful test_setup!')
Run Code Online (Sandbox Code Playgroud) machine-learning distributed-computing neural-network conv-neural-network pytorch
akka ×1
algorithm ×1
api ×1
boinc ×1
distributed ×1
frequency ×1
hadoop ×1
java ×1
javascript ×1
mapreduce ×1
open-source ×1
pagination ×1
postgresql ×1
pytorch ×1
real-time ×1
ruby ×1
scala ×1
stream ×1