7

关于我之前的类似 SO 问题,我尝试在 AWS 上使用雪/降雪进行并行计算。

我所做的是:

  • sfInit()函数中,我将公共 DNS 提供给socketHosts参数,如下所示 sfInit(parallel=TRUE,socketHosts =list("ec2-00-00-00-000.compute-1.amazonaws.com"))
  • 返回的错误是Permission denied (publickey)
  • 然后我按照http://www.imbi.uni-freiburg.de/parallel/的“无密码安全外壳 (SSH) 登录”部分中的说明(我认为是正确的!)
  • 我只是将我在 AWS 上创建的 .pem 文件的内容放入我想从我的主 AWS 实例和主 AWS 实例连接的 AWS 实例的 ~/.ssh/authorized_keys 中

有什么我错过的吗?如果用户可以分享他们在 AWS 上使用雪的经验,我将非常感激。

非常感谢您的建议。

更新:我只是想更新我发现的针对我的具体问题的解决方案:

  • 我使用 StarCluster 设置我的 AWS 集群:StarCluster
  • snowfall在集群的所有节点上安装包
  • 从主节点发出以下命令
  • hostslist <- list("ec2-xxx-xx-xxx-xxx.compute-1.amazonaws.com","ec2-xx-xx-xxx-xxx.compute-1.amazonaws.com")
  • sfInit(parallel=TRUE, cpus=2, type="SOCK",socketHosts=hostslist)
  • l <- sfLapply(1:2,function(x)system("ifconfig",intern=T))
  • lapply(l,function(x)x[2])
  • sfStop()
  • ip 信息确认 AWS 节点正在被使用
4

2 回答 2

2

看起来还不错,但是 pem 文件是错误的。但有时并不是那么简单,很多人不得不与这个问题作斗争。您可以在这篇文章中找到很多提示:

根据我的经验,大多数人在这些步骤中都会遇到问题:

  • 您可以通过 ssh 登录机器吗?(ssh ec2-00-00-00-000.compute-1.amazonaws.com)。尝试使用公共 DNS,而不是公共 IP 进行连接。
  • 如果 22 端口对所有机器开放,您应该检查 AWS 中的“安全组”!

如果您计划启动 10 台以上的工作机器,您应该在您的机器上安装 MPI(性能要好得多!)

来自 cloudnumbers.com 的 Markus :-)

于 2011-09-07T13:13:18.293 回答
1

我相信@Anatoliy 是正确的:您使用的是 X.509 证书。有关添加 SSH 密钥的具体步骤,请查看EC2 入门指南的“凭证类型”部分。

要上传您自己的 SSH 密钥,请查看Alestic 中的此页面

It is a little confusing at first, but you'll want to keep clear which are your access keys, your certificates, and your key pairs, which may appear in text files with DSA or RSA.

于 2011-09-07T13:17:03.710 回答