云计算相当新,所以如果问题显而易见或愚蠢,请耐心等待。随着互联网上大量的信息,我能够成功创建一个ec2 linux实例并在其上安装R和Rstudio。在我的脚本上运行得非常好但是耗时太长(16小时)并且非常昂贵,因为我需要具有高内存和vCPU的实例。
在我的程序中,我基本上为不同的数据集运行相同的脚本。
我的问题是,有什么方法可以运行多个类似的ec2实例(安装完全相同的软件和我的脚本)。因此,通过这种方式,我将能够在更短的时间内在单独的实例上的每个数据集上运行我的脚本。
所以我到目前为止所尝试过的。我已经创建了现有实例的AMI图像并启动了它。但由于其奇怪的用户名和IP地址,我无法通过它来SSH,例如“root@10.0.0.1”。我可以看到两个实例都在运行(原始和AMI图像实例),我可以SSH到原始但不能进入另一个。我能够在端口8787上登录RStudio获取原始实例。
另一个问题是如何使用SSH(Putty)与原始实例并行启动此AMI映像实例。如果我同时在浏览器中使用它们(在这种情况下是RStudio)会导致什么问题呢?
请帮帮我!谢谢!
答案 0 :(得分:2)
这个问题被贬低,当然给人一种不好的感觉。但问题是真的。 我发布了这个问题,因为我被困在其他地方无法找到解决方案,downvotes不鼓励人们提问!
无论哪种方式,我都必须为这个问题编写解决方案:
问题:对于一个学校项目,我在相当大的数据上运行了几种机器学习算法,这些算法恰好需要大量的内存(30-35GB),而我的PC当然不能#39处理它。 我在使用R / RStudio。所以,我使用AWS来解决内存限制问题。
我最初做了什么:我创建了一个ec2-instance,安装了R / RStudio。一切都很完美,我能够通过浏览器在RStudio上运行我的程序。 实际上,我在这个AWS实例上的一个非常小的数据集上运行我的脚本,看看情况如何。令我惊讶的是,即使使用这个小数据集,整个脚本也需要很长时间才能运行。 很快,我意识到我的程序中的所有这些算法都可以通过脚本中的微调来独立运行同一组功能。
所以,我决定稍微使用AWS。我重新创建了程序,除了每个脚本中的学习算法外,一切都保持不变。换句话说,我想用不同的算法同时运行这些程序的副本,以便我可以同时运行所有内容并在更短的时间内生成结果。
现在,我的目标是运行此实例的多个副本(原始实例)。我应该能够在我的浏览器上为每个实例运行RStudio,例如5个ec2实例将在浏览器的不同选项卡上同时运行5个RStudio。有了这个,我就可以在浏览器上为每个实例运行所有RStudio。
然后,我创建了这个实例的图像(AMI),然后我从AMI创建了多个实例,但我在从AMI创建新实例的过程中遗漏了几个点,这导致了我在问题中提出的问题上述强>
我最初怀疑它与端口8787有关,我可能无法为浏览器中的每个ec2实例运行多个RStudio。但是,这根本不是问题。
从AMI创建新实例时,很少有非常重要的事情来处理。
错误:在从此AMI创建新实例时,我 NOT 正确选择了两个重要的事项,即VPC和安全组。
正确的方法是:
VPC - 在"配置实例详细信息"页:
一个。点击"网络"下拉列表并选择为原始实例创建的VPC。 (原始实例是用于创建AMI(图像)的实例)
湾点击"自动分配公共IP"下拉列表并选择启用
安全组 - 在"配置安全组"页:
一个。 for"分配安全组"选项,勾选"选择现有安全组"选项
湾如果列表中有多个安全组,则选择为原始实例创建的安全组(或者创建一个新的安全组,并确保它具有相同类型的入站和出站端口访问)
一旦我进行了设置,正如Marc B在评论中提到的那样,每个实例都有自己的IP地址,并且还分配了本地子网地址
实例的IP地址如下所示:ec2-33-444-22-111.us-west-1.compute.amazonaws.com
子网如下所示:127.0.0.35
现在,在学习了这个之后,我从我的AMI重新创建了5个实例。所以,现在我有5个实例,每个实例都有RStudio。所有这些都运行得非常好,因为我能够对每个人进行SSH。
现在我认为我应该能够在浏览器的不同选项卡中使用这些实例并在其上运行我的脚本。但我无法登录所有人 我的浏览器上的RStudio实例。其中只有一个工作正常,其他人只是没有在浏览器上工作。但是,我能够从putty SSH所有这些。 我本可以从linux(SSH)本身运行我的脚本,但我想用RStudio运行它们。
花了好几个小时之后,我发现了一个问题,就是需要手动为linux 中的每个ec2实例启动RStudio服务器,除了第一个实例。
对于其中一个ec2-instance(除了在浏览器上正常工作的那个),我做了以下操作以手动启动RStudio服务器,如下所示:
SSH使用putty
成为root:sudo su
转到我的linux实例上安装了RStudio的路径:/ usr / lib / rstudio-server / bin
使用以下命令启动RServer:rstudio-server start
现在返回浏览器,打开另一个选项卡并使用您的ec2-instance地址和端口号(http://ec2-33-444-22-111.us-west-1.compute.amazonaws.com:8787)。现在你也应该为这个实例获取RStudio的登录页面。
现在,通过类似的过程,我不得不为所有其他实例手动运行RStudio-servers,以便能够通过浏览器访问它们。然后我想,如果有办法我可以在每次启动linux时启动RStudio服务器。然后想出了一个解决方案。为此,我改变了其中一个 linux的配置文件如下:
成为root:sudo su
转到此路径:cd /etc/rc.d
vi文件" rc.local" ,添加以下命令:
/ usr / lib / rstudio-server / bin / rstudio-server start
保存您所做的更改。
关闭SSH
然后,我回到AWS控制台,停止了这个实例并创建了它的AMI(图像)。现在上述更改对于我将从此AMI创建的每个实例都有效,即现在一旦实例启动就会启动RStudio服务器,并且可以通过浏览器访问。
现在我可以使用浏览器的不同选项卡使用多个RStudio。确保在浏览器中使用正确的实例地址。所有端口号都保持相同,即8787
我希望这个答案也有助于其他人!