在R中使用雪(和降雪)和AWS进行并行处理



关于我之前类似的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的文本文件中。

最新更新