在MPI中,启动后是否可以添加新节点?例如,我有 2 台计算机已经在运行并行 MPI 应用程序。我在第三台计算机上启动此应用程序的另一个实例,并将其添加到现有的通信器中。所有计算机都在本地网络中。
比较在两台不同机器上调用 System.nanoTime() 产生的两个值是否正确?我会说不,因为 System.nanoTime() 通过使用依赖于处理器的时间戳计数器 (TSC)返回相对于某个任意点时间的纳秒级精确时间。
如果我是对的,有没有办法(在 Java 中)在两台不同的机器上捕获瞬间并(安全地)以至少微秒精度甚至纳秒精度比较这些值?
System.currentTimeMillis() 不是解决方案,因为它没有返回线性增加的时间戳数。用户或NTP等服务可以随时更改系统时钟,时间会前后跳跃。
我想知道是否有任何方法可以使用分布式服务器(如 MySQL Cluster)对部署在多台服务器上的 asp.net Web 应用程序执行“锁定”。
例如,以更新帐户余额的经典示例为例。不应有两个请求同时更新相同的帐户余额。例如:
会员 1 账户余额为 100。
因此请求 A 将余额从 100 更新为 200 并保存。
请求 B 将余额更新为 150,并保存。
这些都完全同时发生,因此丢失了信息,因为最终结果应该是 250。
一个锁定如何才能使请求 B 必须等到请求 A 完成,直到它取回余额。如果它是单个进程,这可以通过应用程序范围的锁来实现。但是,由于有多个独立的进程,这对服务器 1 不起作用,它没有被锁定,服务器 2 也没有
任何想法或最佳实践如何做到这一点?
我想安排和分发几台机器--Windows或Ubuntu - (一项任务只在一台机器上)执行R脚本(例如使用RServe).
我不想重新发明轮子,并且想要使用已经存在的系统以最佳方式分发这些任务,并且理想情况下有一个GUI来控制脚本的正确执行.
1 /是否有R包或可用于此的库?
2 /一个似乎被广泛使用的库是mapReduce和Apache Hadoop.我没有这个框架的经验.你会为我的目的提供什么样的安装/插件/设置?
编辑:以下是有关我的设置的更多详细信息:
我确实有一个办公室,里面装满了机器(小型服务器或工作站),有时也用于其他目的.我想使用所有这些机器的计算能力并在其上分发我的R脚本.
我还需要一个调度程序,例如.用于在修复时或定期安排脚本的工具.我正在使用Windows和Ubuntu,但是对于其中一个系统来说,一个好的解决方案就足够了.最后,我不需要服务器来取回脚本的结果.脚本执行的操作包括访问数据库,保存文件等,但不返回任何内容.如果有的话,我只想找回错误/警告.
parallel-processing hadoop r distributed-computing scheduled-tasks
所以这个问题真的是“为什么 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。
我正在尝试建立一个分布式处理环境,所有数据都位于一个共享网络驱动器中。我不会向它写入任何内容,只是读取它,因此我们也在考虑对网络驱动器进行写保护。
我记得当我使用 MSSQL 时,我可以将数据库备份到 DVD 并将其作为只读数据库直接加载。
如果我可以在 Postgres 中做这样的事情,我应该能够给它一个像只读 DVD 一样的抽象,一切都会好起来的。
在 Postgres 中是否有可能发生这样的事情,如果没有,还有其他选择吗?(MySQL?sqlite 甚至?)
或者,如果这是不可能的,是否有某种方法可以指定共享文件系统?(让它知道其他进程也在读取它?)
由于各种原因,使用并行 dbms 是不可能的,我需要两个并行运行的 DB 进程......
任何帮助是极大的赞赏。谢谢!!
我有兴趣实现跨越机器的一些过程,即形成分布式程序.这些流程提供的功能是我想要分发而不是数据.
那么Java目前的分布式编程规范是什么?
它仍然是RMI吗?还是某种消息传递系统?
我最初认为RMI和一些JMX用于远程管理,但想知道目前的最佳实践是什么.似乎RMI总是在另一层下"埋葬"(例如EJB对吗?)
更新:
在回答和评论后,似乎目前的趋势是消息系统?这不是在分布式设计中引入"集中式"组件吗?
在将RDD写入文件之前执行以下转换之间有什么区别?
代码示例:
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()的数据分区方面更感兴趣.
我刚刚了解了CAF,即C++ Actor Framework.
让我感到惊讶的一件事是,通过网络提供演员的方法是将其"发布"到特定的TCP端口.
这基本上意味着您可以发布的actor的数量受到您拥有的端口数量的限制(64k).由于你需要一个端口来发布一个actor和一个端口来访问一个远程actor,我假设两个进程每个最多可以共享大约32k个actor,而它们每个可能在商品服务器上拥有一百万个actor. .如果集群有10个节点,情况会更糟.
为了使发布可扩展,每个进程应该只需要为一个系统中的每个actor 打开1个端口,并打开1个连接到他们想要访问的每个actor系统.
有没有办法发布一个actor作为actor系统中所有actor 的代理(最好没有任何重大的性能损失)?