标签: distributed-computing

分布式网络和去中心化网络之间的区别

我以为我知道其中的区别,但现在我有点困惑,我不再确定了。所以我想我可以问你。分布式网络可以是集中式的,也可以是去中心化的吗?或者说分布式网络就一定意味着没有中心节点吗?我认为分布式网络也是去中心化的,但经过研究,我现在对此表示怀疑。

我希望有人能帮助我谢谢!

architecture distributed-computing distributed-system centralized

3
推荐指数
1
解决办法
1372
查看次数

ZooKeeper 如何提供顺序一致性

这里 有人说:

“即使你每次都从不同的追随者那里读到数据,在看到第 4 版之后,你永远也看不到第 3 版的数据。”

因此,如果我有 3 个节点 zookeeper 仲裁,如下所示:

zk0 -- leader
zk1
zk2
Run Code Online (Sandbox Code Playgroud)

假设仲裁“3”中有一个值并且我有一个客户端连接到zk1,然后我的客户端发送一个写入请求(将“3”更新为“4”)并且zk0(领导者)写入该值然后随后收到来自zk1. 我的客户可以看到新的(“4”),因为它连接到zk1.

现在我的问题是,如果我将我的客户从 切换zk1zk2(领导者没有收到来自 的写确认zk2,所以zk2在法定人数之后)我会看到该值是“3”而不是“4”。它会破坏顺序一致性吗?

consistency distributed-computing apache-zookeeper

3
推荐指数
1
解决办法
693
查看次数

Flink:Jobmanager UI 中设置的并行度与任务槽有什么关系?

假设我有 8 个任务管理器和 16 个任务槽。如果我使用 Jobmanager UI 提交作业并将并行度设置为 8,我是否只使用 8 个任务槽?

如果我有 8 个有 8 个插槽的任务管理器,并以 8 的并行度提交相同的作业怎么办?它是完全一样的吗?或者数据的处理方式有什么不同?

谢谢你。

parallel-processing distributed-computing bigdata apache-flink

3
推荐指数
1
解决办法
792
查看次数

Paxos 强一致吗?

考虑一个具有 3 个节点的分布式系统 - n1、n2、n3。节点之间有一个共享数据x。Paxos 正在节点上运行。一开始,x 等于 4。

客户端向n1发送更新请求,将x的值修改为5。n1和n2通过运行Paxos就新值达成共识,但n3出现了一些链路故障,因此n3没有最新的x值。

我们知道Paxos提供强一致性。另一方面,如果客户端向 n1 发送一个读请求,同时向 n3 发送另一个读请求,则返回值不相同(其中一个是 5,另一个是 4)。因此,运行Paxos后,系统并不是强一致的。

我的问题是:如何解决这个矛盾?我是不是误会了什么?

concurrency distributed-computing distributed-system consensus paxos

3
推荐指数
1
解决办法
864
查看次数

Slurm:提交到多个节点时出错(“slurmstepd:错误:execve():python:没有这样的文件或目录”)

我有一个 bash 脚本submit.sh,用于向 Slurm 服务器提交训练作业。其工作原理如下。正在做

bash submit.sh p1 8 config_file
Run Code Online (Sandbox Code Playgroud)

将提交一些对应于config_file分区 8 个 GPU 的任务p1。每个节点p1有 4 个 GPU,因此该命令请求 2 个节点。

内容submit.sh可以概括如下,其中我使用sbatch提交了一个Slurm脚本(train.slurm):

bash submit.sh p1 8 config_file
Run Code Online (Sandbox Code Playgroud)

现在,在 Slurm 脚本中train.slurm,我决定是在一个还是多个节点上启动训练 Python 脚本(这两种情况下启动方式不同):

#!/bin/bash
# submit.sh

PARTITION=$1
NGPUs=$2
CONFIG=$3

NGPUS_PER_NODE=4
NCPUS_PER_TASK=10

sbatch --partition ${PARTITION} \
    --job-name=${CONFIG} \
    --output=logs/${CONFIG}_%j.log \
    --ntasks=${NGPUs} \
    --ntasks-per-node=${NGPUS_PER_NODE} \
    --cpus-per-task=${NCPUS_PER_TASK} \
    --gres=gpu:${NGPUS_PER_NODE} \
    --hint=nomultithread \
    --time=10:00:00
    --export=CONFIG=${CONFIG},NGPUs=${NGPUs},NGPUS_PER_NODE=${NGPUS_PER_NODE} \
    train.slurm
Run Code Online (Sandbox Code Playgroud)

现在,如果我在单个节点(例如bash submit.sh …

bash distributed-computing slurm sbatch

3
推荐指数
1
解决办法
2万
查看次数

AWS SQS 是否跨区域复制消息?

由于SQS是分布式队列,那么它是在同一区域还是不同区域复制消息呢?查看AWS 文档中的架构,它显示正在复制消息,但它是在同一区域还是不同区域复制?

使用案例:

我正在区域中设置队列X,但可能会在世界另一端的区域中访问它。因此,如果有两个工作线程,一个在 Region 中运行X,一个在 Region 中运行,那么Y两者是否都从同一个 Region 队列获取数据,或者 Region和 RegionX是否从靠近它们的 Region 获取数据。XY

就像X从区域获取消息X一样,在该信息到达区域更新队列之前Y,另一个工作人员从复制的区域Y队列中获取并读取相同的消息。

PS:- 我至少知道一次 SQS 的语义。但我想知道上述用例中的语义。

distributed-computing amazon-sqs amazon-web-services

3
推荐指数
1
解决办法
9299
查看次数

使用MSDTC和实体框架的提供程序失败

我有一个应用程序保存到数据库(使用实体框架)并在单个保存中将文档保存到Sharepoint.我正在尝试将MSDTC与TransactionScope一起使用.

我的EF插入逻辑的一部分包括将外键列表传递给数据层.该层从db中检索"foreign key'd"对象,然后将其添加到主对象.奇怪的是,这适用于第一个外键项目,但在第二个时出现以下消息失败.

System.Data.EntityException:基础提供程序在Open上失败.---> System.Transactions.TransactionManagerCommunicationException:已禁用分布式事务管理器(MSDTC)的网络访问.请使用组件服务管理工具在MSDTC的安全配置中启用DTC以进行网络访问.

MSDTC已启用并在第一次通过期间工作,但不是第二次通过.我假设当我进行几个选择调用时,上下文会以某种方式混淆?

这是我的逻辑:

//Create new order

foreach(int lineItemId in lineItems)
{
   //Retrieve the LineItem object from db
   //Add the LineItem object to the Order
}

//Save using EF
Run Code Online (Sandbox Code Playgroud)

也许我不应该从数据库中检索对象?我错过了在EF中引用关系的简单方法吗?

.net msdtc entity-framework distributed-computing

2
推荐指数
1
解决办法
2706
查看次数

准备分布式系统硕士学位

我打算从我的大学攻读硕士学位,Networks and Distributed Systems.虽然我不确定我是否会被录取,但我还是想为此做好准备.我现在对分布式系统唯一了解的就是我在Tanenbaum的Modern Operating Systems书中所读到的(我非常喜欢这种方式),这本书非常简单.当然我打算下一本关于分布式系统的书,但我想我曾在这里问过一次.

是否有任何特定的书籍,编程语言(最重要的)或任何我可以预先准备的计算机科学的特定概念?我有3个月的时间.

任何建议都会受到欢迎.包括对课程本身的评论:)

distributed-computing

2
推荐指数
1
解决办法
3048
查看次数

集中式计算和分布式计算之间的差异

我在集中式计算和分布式计算之间混淆.任何人都可以告诉我集中式和分布式计算之间的区别吗?

提前致谢

distributed-computing

2
推荐指数
2
解决办法
5万
查看次数

如果数据无法在Spark中使用cache()进入内存,会发生什么?

我是Spark的新手.我在多个地方读过在RDD上使用cache()会导致它存储在内存中但是到目前为止我还没有找到关于"如何确定数据的最大大小"的明确指南或经验法则塞进记忆?如果我调用"缓存"的数据量超过内存,会发生什么?它会导致我的工作失败还是仍然会对集群性能产生明显影响?

谢谢!

distributed-computing cluster-computing apache-spark

2
推荐指数
1
解决办法
928
查看次数