标签: distributed-computing

OpenMPI 中的动态节点

在MPI中,启动后是否可以添加新节点?例如,我有 2 台计算机已经在运行并行 MPI 应用程序。我在第三台计算机上启动此应用程序的另一个实例,并将其添加到现有的通信器中。所有计算机都在本地网络中。

distributed-computing mpi openmpi

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

比较不同机器产生的 System.nanoTime() 值

比较在两台不同机器上调用 System.nanoTime() 产生的两个值是否正确?我会说不,因为 System.nanoTime() 通过使用依赖于处理器的时间戳计数器 (TSC)返回相对于某个任意点时间的纳秒级精确时间。

如果我是对的,有没有办法(在 Java 中)在两台不同的机器上捕获瞬间并(安全地)以至少微秒精度甚至纳秒精度比较这些值?

System.currentTimeMillis() 不是解决方案,因为它没有返回线性增加的时间戳数。用户或NTP等服务可以随时更改系统时钟,时间会前后跳跃。

java distributed-computing time-precision nanotime

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

锁定服务器场 (asp.net)

我想知道是否有任何方法可以使用分布式服务器(如 MySQL Cluster)对部署在多台服务器上的 asp.net Web 应用程序执行“锁定”。

例如,以更新帐户余额的经典示例为例。不应有两个请求同时更新相同的帐户余额。例如:

会员 1 账户余额为 100。

  • 请求 A 访问服务器 1 给成员 1 的余额增加 100
  • 请求 B 访问服务器 2 给成员 1 的余额增加 50

因此请求 A 将余额从 100 更新为 200 并保存。
请求 B 将余额更新为 150,并保存。

这些都完全同时发生,因此丢失了信息,因为最终结果应该是 250。

一个锁定如何才能使请求 B 必须等到请求 A 完成,直到它取回余额。如果它是单个进程,这可以通过应用程序范围的锁来实现。但是,由于有多个独立的进程,这对服务器 1 不起作用,它没有被锁定,服务器 2 也没有

任何想法或最佳实践如何做到这一点?

c# asp.net locking distributed-computing distributed-system

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

R脚本的分布式调度系统

我想安排和分发几台机器--Windows或Ubuntu - (一项任务只在一台机器上)执行R脚本(例如使用RServe).

我不想重新发明轮子,并且想要使用已经存在的系统以最佳方式分发这些任务,并且理想情况下有一个GUI来控制脚本的正确执行.

1 /是否有R包或可用于此的库?

2 /一个似乎被广泛使用的库是mapReduce和Apache Hadoop.我没有这个框架的经验.你会为我的目的提供什么样的安装/插件/设置?

编辑:以下是有关我的设置的更多详细信息:
我确实有一个办公室,里面装满了机器(小型服务器或工作站),有时也用于其他目的.我想使用所有这些机器的计算能力并在其上分发我的R脚本.
我还需要一个调度程序,例如.用于在修复时或定期安排脚本的工具.我正在使用Windows和Ubuntu,但是对于其中一个系统来说,一个好的解决方案就足够了.最后,我不需要服务器来取回脚本的结果.脚本执行的操作包括访问数据库,保存文件等,但不返回任何内容.如果有的话,我只想找回错误/警告.

parallel-processing hadoop r distributed-computing scheduled-tasks

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

如何在 OS XC 代码中创建异步计时器?

所以这个问题真的是“为什么 OS X 和 Linux 上的 time.h 不一样?” 但是,我已经接受了这些差异。

为了在“Unix”系统上创建计时器,我按照本教程http://www.helsinki.fi/atk/unix/dec_manuals/DOC_40D/APS33DTE/DOCU_007.HTM#timer-type-sec

这需要使用<sys/time.h>和 调用timer_create(),然后为信号类型设置信号处理程序。这个我知道怎么做。问题是,如何在 OS X 上实现同样的事情?

需要注意的关键是这些计时器需要是实时的,即异步排队并且必须使用 a 的sa_sigaction字段struct sigaction,以便与计时器警报关联的元数据可以传递给信号处理程序。这在这里有更详细的描述http://www.helsinki.fi/atk/unix/dec_manuals/DOC_40D/APS33DTE/DOCU_006.HTM#sigevent-sec

c macos system distributed-computing

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

是否可以在写保护的文件系统上运行 Postgres?还是共享文件系统?

我正在尝试建立一个分布式处理环境,所有数据都位于一个共享网络驱动器中。我不会向它写入任何内容,只是读取它,因此我们也在考虑对网络驱动器进行写保护。

我记得当我使用 MSSQL 时,我可以将数据库备份到 DVD 并将其作为只读数据库直接加载。

如果我可以在 Postgres 中做这样的事情,我应该能够给它一个像只读 DVD 一样的抽象,一切都会好起来的。

在 Postgres 中是否有可能发生这样的事情,如果没有,还有其他选择吗?(MySQL?sqlite 甚至?)

或者,如果这是不可能的,是否有某种方法可以指定共享文件系统?(让它知道其他进程也在读取它?)

由于各种原因,使用并行 dbms 是不可能的,我需要两个并行运行的 DB 进程......

任何帮助是极大的赞赏。谢谢!!

postgresql parallel-processing distributed-computing

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

Java中分布式程序的当前最佳实践

我有兴趣实现跨越机器的一些过程,即形成分布式程序.这些流程提供的功能是我想要分发而不是数据.
那么Java目前的分布式编程规范是什么?
它仍然是RMI吗?还是某种消息传递系统?
我最初认为RMI和一些JMX用于远程管理,但想知道目前的最佳实践是什么.似乎RMI总是在另一层下"埋葬"(例如EJB对吗?)

更新:
在回答和评论后,似乎目前的趋势是消息系统?这不是在分布式设计中引入"集中式"组件吗?

java ipc jms rmi distributed-computing

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

共识算法如何保证一致性?

两位将军证明“不可能设计出安全一致的算法”时,像Paxos这样的共识算法如何“保证安全(免于不一致)”?

当我考虑让两台服务器(1)可靠地交换号码(即两台服务器最终都知道对方确实收到了号码)或(2)两台服务器最终都知道交换失败并且不改变他们的状态,似乎(就像两个将军一样)消息失败总是以一种留下不一致的方式发生(即,一个服务器认为另一个完成了交换,但它没有)。

那么Paxos(或其他任何东西)如何真正保证“免于不一致”?有没有通俗易懂的解释?演示两个服务器进行有保证的交换或在失败时完全放弃交换的最简单的伪代码是什么?

algorithm distributed-computing consensus handshake paxos

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

Apache Spark中的混乱与非混乱合并

在将RDD写入文件之前执行以下转换之间有什么区别?

  1. coalesce(1,shuffle = true)
  2. coalesce(1,shuffle = false)

代码示例:

val input = sc.textFile(inputFile)
val filtered = input.filter(doSomeFiltering)
val mapped = filtered.map(doSomeMapping)

mapped.coalesce(1, shuffle = true).saveAsTextFile(outputFile)
vs
mapped.coalesce(1, shuffle = false).saveAsTextFile(outputFile)
Run Code Online (Sandbox Code Playgroud)

它与collect()相比如何?我完全知道Spark保存方法会将它存储为HDFS风格的结构,但是我对collect()和shuffled/non-shuffled coalesce()的数据分区方面更感兴趣.

scala distributed-computing bigdata apache-spark

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

如何"发布"CAF中的大量演员?

我刚刚了解了CAF,即C++ Actor Framework.

让我感到惊讶的一件事是,通过网络提供演员的方法是将其"发布"特定的TCP端口.

这基本上意味着您可以发布的actor的数量受到您拥有的端口数量的限制(64k).由于你需要一个端口来发布一个actor和一个端口来访问一个远程actor,我假设两个进程每个最多可以共享大约32k个actor,而它们每个可能在商品服务器上拥有一百万个actor. .如果集群有10个节点,情况会更糟.

为了使发布可扩展,每个进程应该只需要为一个系统中的每个actor 打开1个端口,并打开1个连接到他们想要访问的每个actor系统.

有没有办法发布一个actor作为actor系统中所有actor 的代理(最好没有任何重大的性能损失)?

c++ distributed-computing actor c++-actor-framework

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