我以为我知道其中的区别,但现在我有点困惑,我不再确定了。所以我想我可以问你。分布式网络可以是集中式的,也可以是去中心化的吗?或者说分布式网络就一定意味着没有中心节点吗?我认为分布式网络也是去中心化的,但经过研究,我现在对此表示怀疑。
我希望有人能帮助我谢谢!
architecture distributed-computing distributed-system centralized
在这里 有人说:
“即使你每次都从不同的追随者那里读到数据,在看到第 4 版之后,你永远也看不到第 3 版的数据。”
因此,如果我有 3 个节点 zookeeper 仲裁,如下所示:
zk0 -- leader
zk1
zk2
Run Code Online (Sandbox Code Playgroud)
假设仲裁“3”中有一个值并且我有一个客户端连接到zk1,然后我的客户端发送一个写入请求(将“3”更新为“4”)并且zk0(领导者)写入该值然后随后收到来自zk1. 我的客户可以看到新的(“4”),因为它连接到zk1.
现在我的问题是,如果我将我的客户从 切换zk1到zk2(领导者没有收到来自 的写确认zk2,所以zk2在法定人数之后)我会看到该值是“3”而不是“4”。它会破坏顺序一致性吗?
假设我有 8 个任务管理器和 16 个任务槽。如果我使用 Jobmanager UI 提交作业并将并行度设置为 8,我是否只使用 8 个任务槽?
如果我有 8 个有 8 个插槽的任务管理器,并以 8 的并行度提交相同的作业怎么办?它是完全一样的吗?或者数据的处理方式有什么不同?
谢谢你。
parallel-processing distributed-computing bigdata apache-flink
考虑一个具有 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
我有一个 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 …
由于SQS是分布式队列,那么它是在同一区域还是不同区域复制消息呢?查看AWS 文档中的架构,它显示正在复制消息,但它是在同一区域还是不同区域复制?
使用案例:
我正在区域中设置队列X,但可能会在世界另一端的区域中访问它。因此,如果有两个工作线程,一个在 Region 中运行X,一个在 Region 中运行,那么Y两者是否都从同一个 Region 队列获取数据,或者 Region和 RegionX是否从靠近它们的 Region 获取数据。XY
就像X从区域获取消息X一样,在该信息到达区域更新队列之前Y,另一个工作人员从复制的区域Y队列中获取并读取相同的消息。
PS:- 我至少知道一次 SQS 的语义。但我想知道上述用例中的语义。
我有一个应用程序保存到数据库(使用实体框架)并在单个保存中将文档保存到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中引用关系的简单方法吗?
我打算从我的大学攻读硕士学位,Networks and Distributed Systems.虽然我不确定我是否会被录取,但我还是想为此做好准备.我现在对分布式系统唯一了解的就是我在Tanenbaum的Modern Operating Systems书中所读到的(我非常喜欢这种方式),这本书非常简单.当然我打算下一本关于分布式系统的书,但我想我曾在这里问过一次.
是否有任何特定的书籍,编程语言(最重要的)或任何我可以预先准备的计算机科学的特定概念?我有3个月的时间.
任何建议都会受到欢迎.包括对课程本身的评论:)
我在集中式计算和分布式计算之间混淆.任何人都可以告诉我集中式和分布式计算之间的区别吗?
提前致谢
我是Spark的新手.我在多个地方读过在RDD上使用cache()会导致它存储在内存中但是到目前为止我还没有找到关于"如何确定数据的最大大小"的明确指南或经验法则塞进记忆?如果我调用"缓存"的数据量超过内存,会发生什么?它会导致我的工作失败还是仍然会对集群性能产生明显影响?
谢谢!
.net ×1
amazon-sqs ×1
apache-flink ×1
apache-spark ×1
architecture ×1
bash ×1
bigdata ×1
centralized ×1
concurrency ×1
consensus ×1
consistency ×1
msdtc ×1
paxos ×1
sbatch ×1
slurm ×1