r - 是否可以在 R 中启动多个 EC2 实例?

标签 r amazon-ec2

这更像是一个初学者的问题。假设我有以下代码:

library("multicore")
library("iterators")
library("foreach")
library("doMC")

registerDoMC(16)

foreach(i in 1:M) %dopar% {
   ##do stuff
}

如果可用,此代码将在 16 个内核上运行。现在,如果我理解正确,使用 Amazon EC2,在一个实例上,我只依赖于实例的几个核心。因此,如果我想在 16 个内核上运行模拟,我需要使用多个实例,这意味着据我所知启动新的 R 进程。但是我需要在 R 之外编写额外的代码来收集结果。

所以我的问题是,是否有一个 R 包,它允许从 R 中启动 EC2 实例,自动在这些实例之间分配负载,并在启动的初始 R 中收集结果?

最佳答案

准确地说,EC2 上的最大实例类型目前是 8 个核心,因此任何人,甚至是 R 的用户,都需要多个实例才能在 8 个以上的核心上同时运行。

如果您想使用更多实例,那么您有两种部署 R 的选项:“常规”R 调用或 MapReduce 调用。在前一种情况下,您必须设置代码来启动实例、分配任务(例如 foreach 中的独立迭代)、返回结果等。这是可行的,但您不太可能喜欢它。在这种情况下,您可以使用类似 rmr 的内容。或 RHipe管理 MapReduce 网格,或者您可以使用 snow和许多其他 HPC 工具来创建一个简单的网格。使用 snow可能使保持代码完整更容易,但您必须学习如何将这些东西联系在一起。

在后一种情况下,您可以在 Amazon 提供的基础设施上进行构建,例如 Elastic MapReduce (EMR) 和使其更简单的包,例如 JD 的 segue .我推荐 segue作为一个很好的起点,正如其他人所做的那样,因为它具有更温和的学习曲线。开发人员也在 SO,因此您可以在中断时轻松地向他提问。

关于r - 是否可以在 R 中启动多个 EC2 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8063417/

相关文章:

amazon-web-services - Elastic Beanstalk NetworkOut 自动扩展

ruby-on-rails - 使用 Upstart 启动 Sidekiq

postgresql - OpenStreetMap 和 Hadoop

r - fread 系统区域设置错误

r - 使用RSelenium在元素上单击鼠标右键

python - 如何将 R conda env 连接到 jupyter notebook

r - 为什么RJava无法安装

c - 阅读为 R 包编写的 C 代码。在哪里可以找到 RANDIN、UNIF、EPS 等的定义?

amazon-web-services - 将具有 Glacier 存储类的 S3 文件移动到不同的文件夹

linux - 如何将AWS老一代实例迁移到当前一代实例而不丢失数据