7

与我之前的similar SO question相比,我尝试使用AWS上的降雪/降雪​​来进行并行计算。在R中用于并行处理的雪(和降雪)用于并行处理

我所做的是:

  • 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)登录'部分
  • 我只是猫的.pem文件的内容我crea将AWS连接到AWS实例的〜/ .ssh/authorized_keys我想从我的主AWS实例和主AWS实例连接到

有什么我错过了吗? 如果用户可以分享他们在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节点正在使用
+2

我相信.pem文件是一个X509证书,而不是RSA公钥。如本节所述,您应该在主节点上生成密钥对,并将公钥复制到从节点的authorized_keys。 – Anatoliy

+0

我相信@Anatoliy是正确的;他应该回答这个问题,而不仅仅是一个评论,所以我们可以赞成。 :) – Iterator

+0

也许我在你的另一个关于“使用StarCluster”的问题上忽略了我的答案,就像我现在看到的那样,但是在私有IP范围内运行整个集群时,我没有必要在启动后大声使用密钥或证书这样做。 – Thell

回答

1

我相信@Anatoliy是正确的:您正在使用X.509证书。有关添加SSH密钥的确切步骤,请查看EC2 Starters Guide的“凭据类型”部分。

要上传您自己的SSH密钥,请查看this page from Alestic

起初有点令人困惑,但您需要清楚哪些是您的访问密钥,证书和密钥对,这些密钥对可能出现在带有DSA或RSA的文本文件中。

+0

感谢您的链接。不知怎的,这会变得比我预期的更毛骨悚然。 – harshsinghal

+0

它变得简单了,但是不用感谢亚马逊的介绍材料 - 它们通常只有在一个人掌握了所有东西之后才有意义。 Alestic是一个很好的知识点。 – Iterator

+1

您如何看待http://web.mit.edu/stardev/cluster/docs/0.92rc2/quickstart.html? – harshsinghal

2

长得不坏,但PEM文件是错误的。但有时候并不那么简单,很多人不得不面对这个问题。有很多技巧的,你可以在这个帖子找到:

从我的经验,多数人都在这些步骤中的问题:

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

如果你打算开始超过10台工作机器,你应该在你的机器上安装MPI工作(更好的性能!)

马库斯从cloudnumbers.com :-)

+0

我可以ssh到奴隶节点和所有机器属于同一个安全组。另外我使用公共DNS进行连接。 – harshsinghal