关于我之前类似的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文件的内容输入到~/目录中。ssh/authorized_keys我想从我的主AWS实例连接到的AWS实例以及主AWS实例的ssh/authorized_keys
我错过了什么吗?如果用户可以分享他们在AWS上使用snow的经验,我将非常感激。
非常感谢你的建议。
更新:我只是想更新我找到的解决方案,以解决我的具体问题:
- 我使用StarCluster来设置我的AWS集群:
- 在集群的所有节点上安装
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节点正在被使用
看起来没有那么糟糕,但是pem文件是错误的。但有时并没有那么简单,许多人不得不与这个问题作斗争。你可以在这篇文章中找到很多技巧:
- https://forums.aws.amazon.com/message.jspa?messageID=241341
- 或者在google上查看其他帖子。
根据我的经验,大多数人在以下步骤中都会遇到问题:
- 您可以通过ssh登录到机器上吗?(ssh ec2 - 00 - 00 - 00 - 000. -计算- 1. - amazonaws.com)。尝试使用公共DNS,而不是公共IP连接。 如果22端口对所有机器开放,您应该检查AWS中的"安全组"!
如果您计划启动超过10台工作机器,您应该在您的机器上安装MPI(性能更好!)
Markus from cloudnumbers.com:-)
我相信@Anatoliy是正确的:您正在使用X.509证书。要了解添加SSH密钥的具体步骤,请参阅EC2初学者指南中的"凭据类型"部分。
要上传自己的SSH密钥,请查看Alestic的这个页面。
一开始可能会有点混乱,但是您需要清楚哪些是您的访问密钥,您的证书和您的密钥对,它们可能出现在DSA或RSA的文本文件中。