标签: distributed-computing

分布式互斥体

我们的云中有数百台服务器。这些服务器中的任何一个都可以随时调用一个脚本。我必须确保在任何给定时间只有一台服务器正在运行该脚本。当一台服务器已获取脚本锁定,而另一台服务器尝试执行时,只需写入日志文件并退出即可。可以有多个这样的脚本,每个脚本都有一个单独的互斥锁。这意味着我想要一个能够容纳多个服务器多个脚本的解决方案。我正在寻找一个非常简单的解决方案。请向我指出任何可用的工具或建议我实现这一点的流行方法。

cloud distributed-computing

5
推荐指数
1
解决办法
4803
查看次数

SparkPi 超过 1 个切片时运行缓慢

Spark 相对较新,并尝试在独立的 12 核三机器集群上运行 SparkPi 示例。我无法理解的是,与使用 12 个切片相比,使用单个切片运行此示例可以提供更好的性能。当我使用并行函数时也是如此。随着添加每个切片,时间几乎呈线性缩放。如果我做错了什么,请告诉我。代码片段如下:

val spark = new SparkContext("spark://telecom:7077", "SparkPi",
  System.getenv("SPARK_HOME"), List("target/scala-2.10/sparkpii_2.10-1.0.jar"))
val slices = 1
val n = 10000000 * slices
val count = spark.parallelize(1 to n, slices).map {
  i =>
    val x = random * 2 - 1
    val y = random * 2 - 1
    if (x * x + y * y < 1) 1 else 0
}.reduce(_ + _)
println("Pi is roughly " + 4.0 * count / n)
spark.stop()
Run Code Online (Sandbox Code Playgroud)

更新:问题在于随机函数,因为它是同步方法,所以无法扩展到多个核心。

scala distributed-computing apache-spark

5
推荐指数
1
解决办法
527
查看次数

分布式快照算法(如 Chandy Lamport)如何在现实世界的分布式系统中实现?

谁能解释一下分布式快照算法(示例:Chandy-Lamport)是如何在现代分布式系统的背景下实现的?

你能说出一个使用此类算法的开源系统实现吗?

这个理论如何真正转化为现实世界?

distributed snapshot distributed-computing

5
推荐指数
1
解决办法
1827
查看次数

集群中的Spring Boot应用程序

我正在开发一个 Spring Boot 应用程序。

由于 Spring Boot 为应用程序创建了 .jar 文件。我想将这个特定的应用程序集群到不同的服务器上。假设我构建了一个 jar 文件并运行了一个项目,那么它应该从多个定义的服务器以集群模式运行,并且应该能够满足最终用户的需求。

我的 jar 将仅驻留在一台服务器上,但它将聚集在多个服务器上。当最终用户从我的 Spring Boot 应用程序调用 Web 服务时,他永远不知道它是从哪里调用的。

集群背后的原因是假设将来任何服务器出现故障,最终用户仍然可以从另一台服务器访问 Web 服务。但我不知道如何使其聚集。

任何人都可以给我对此的见解吗?

java distributed-computing cluster-computing embedded-tomcat-7 spring-boot

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

如何检查 OpenMPI 中使用了哪些 MCA 参数?

OpenMPI代码库中,每个模块都有多个变体。调用时,您可以从模块化组件架构 (MCA)中选择您想要使用的mpirun模块。选项包括...

  • 集体算法 (coll):basic、tuned、inter、cuda、ml、sm、...
  • 字节传输层 (btl):openib、tcp、...
  • 点对点管理层 (pml):cm、ob1、...
  • 匹配传输层 (mtl):mxm、psm、...

您可以像这样指定 MCA 组件的选择:

mpirun --mca btl self,openib --mca pml ob1 -np $nProcs ./myprogram


我的问题:

  1. 如果我未指定某些 MCA 参数,默认值是什么?
  2. 是否有详细模式可以打印正在使用的所有 MCA 组件?(我尝试添加-v到我的mpirun命令中,但它没有打印任何额外的内容。)

parallel-processing hpc distributed-computing mpi openmpi

5
推荐指数
1
解决办法
3514
查看次数

在 DataFrame 联合后管理 Spark 分区

我有一个 Spark 应用程序,需要大量使用它unions,我将在不同时间、不同情况下将大量 DataFrame 合并在一起。我正在努力使这项工作尽可能高效地进行。我对 Spark 还很陌生,我突然想到了一件事:

如果我有dfA具有 X 个分区 ( ) 的 DataFrame 'A' ( ) numAPartitions,并将其联合到dfB具有 Y 个分区 ( ) 的DataFrame 'B' ( numBPartitions) ,那么生成的联合 DataFrame ( unionedDF) 会是什么样子,结果如何分区?

// How many partitions will unionedDF have?
// X * Y ?
// Something else?
val unionedDF : DataFrame = dfA.unionAll(dfB)
Run Code Online (Sandbox Code Playgroud)

对我来说,理解这一点似乎非常重要,因为 Spark 性能似乎严重依赖于 DataFrames 采用的分区策略。因此,如果我左右合并 DataFrame,我需要确保不断管理合并后的 DataFrame 的分区。

我唯一想到的(以便正确管理联合数据帧的分区)是对它们重新分区,然后在联合它们后立即将数据帧持久保存到内存/磁盘:

val unionedDF : DataFrame = dfA.unionAll(dfB) …
Run Code Online (Sandbox Code Playgroud)

partitioning distributed-computing unions apache-spark apache-spark-sql

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

如何在Condor上运行python程序?

我是 Condor 的新手,正在尝试在 Condor 上运行我的 Python 程序,但很难做到这一点。我发现的所有教程都假设单个文件 Python 程序,但我的 Python 程序由多个包和文件组成,并且还使用其他库,例如 numpy 和 scipy。那么,我怎样才能让Condor运行我的程序呢?我应该将程序转换为某种可执行文件吗?或者,有什么方法可以将Python源代码转移到Condor机器上并让Python在Condor上运行源代码吗?

谢谢,

distributed-computing python-2.7 condor

5
推荐指数
1
解决办法
3877
查看次数

使用 Apache Kafka 键/值存储有哪些副作用?

我知道 Kafka 不是 ak/v 商店,但请耐心听我说。假设它是使用下面的 k/v API 来粗略实现的。每个键都是一个主题,键的当前“值”是写入该主题的最后一条消息:

put(key, value) --> publish(topic=key, message=value)
get(key) --> consume(topic=key, offset = last_offset - 1)
Run Code Online (Sandbox Code Playgroud)

此外,假设状态在不同的 Kafka 集群之间复制(使用 MirrorMaker 双向),以允许用户读/写到更近的数据中心以减少延迟。

我已经知道这样做的一些明显的副作用,例如:

  • 由于“键”映射到一个主题,因此您只能有 1 个分区来保证排序(因为您希望最后放置的值始终位于日志的末尾)。
  • 需要考虑保留策略,因为日志中的最后一条消息可能会被删除
  • 如果您对离您最近的集群执行 put(key, value),即使从技术上讲这是对该密钥的最新放置,MirrorMaker(由于延迟)可能会从另一个集群发布过时的密钥,从而覆盖您最近的放置价值

这里主要关注的是延迟,尤其是不同集群之间的延迟。与 Redis、memcached 或 etcd 等传统 k/v 解决方案相比,您认为该解决方案在压力大的工作负载(例如,给定键/主题上每秒数千次写入)和压力网络条件下的表现如何?

想法?

非常感谢你。

latency distributed-computing apache-kafka

5
推荐指数
1
解决办法
6473
查看次数

为什么 Paxos 设计分两个阶段

为什么 Paxos 需要两个阶段(prepare/promise+ accept/accepted)而不是一个阶段?也就是说,仅使用prepare/promise部分,如果提议者收到了大多数接受者的回复,则选择该值。

问题出在哪里,它是否破坏了安全性或活力?

distributed-computing paxos

5
推荐指数
1
解决办法
738
查看次数

奥尔良 - 当系统存储关闭或无法访问时会发生什么?

我正在评估 Microsoft Orleans 作为自定义分布式缓存(以及其他功能)的基础。

我能够使用 MembershipTableGrain 创建一个用于评估目的的不可靠集群。一切都按照文档中的描述进行。

现在我计划使用本地服务器建立一个可靠的集群(Azure 不是一个选项)。我似乎倾向于使用关系存储 (SqlServer/ADO.net) 会员提供程序

我的问题是:

如果筒仓成员数据库关闭或无法访问(服务器中断、网络问题等),集群内筒仓的状态会发生什么情况?据我了解奥尔良成员协议,我认为这会影响整个集群。

distributed-computing orleans

5
推荐指数
1
解决办法
370
查看次数