将snow(和snowfall)与AWS一起用于R中的并行处理

将snow(和snowfall)与AWS一起用于R中的并行处理,r,parallel-processing,amazon-web-services,snowfall,starcluster,R,Parallel Processing,Amazon Web Services,Snowfall,Starcluster,与我之前的研究相比,我尝试在AWS上使用snow/snowfall进行并行计算 我所做的是: 在sfInit()函数中,我向socketHosts参数提供了公共DNS,如下所示 sfInit(parallel=TRUE,socketHosts=list(“ec2-00-00-00-000.compute-1.amazonaws.com”) 返回的错误是权限被拒绝(公钥) 然后,我按照“无密码安全Shell(SSH)登录”部分中的说明(我猜是正确的!)进行操作 我只是将我在AWS上创建的.pem

与我之前的研究相比,我尝试在AWS上使用snow/snowfall进行并行计算

我所做的是:

  • sfInit()
    函数中,我向
    socketHosts
    参数提供了公共DNS,如下所示
    sfInit(parallel=TRUE,socketHosts=list(“ec2-00-00-00-000.compute-1.amazonaws.com”)
  • 返回的错误是
    权限被拒绝(公钥)
  • 然后,我按照“无密码安全Shell(SSH)登录”部分中的说明(我猜是正确的!)进行操作
  • 我只是将我在AWS上创建的.pem文件的内容放入我要从主AWS实例连接到的AWS实例以及主AWS实例的~/.ssh/authorized_密钥中
有什么我遗漏的吗? 如果用户能够分享他们在AWS上使用snow的经验,我将不胜感激

非常感谢你的建议

更新: 我只是想更新我找到的针对我的特定问题的解决方案:

  • 我使用StarCluster设置AWS群集:
  • 已在群集的所有节点上安装软件包
    snowfall
  • 从主节点发出以下命令

  • hostslist看起来没那么糟糕,但是pem文件是错误的。但有时并不是那么简单,许多人不得不为这个问题而斗争。你可以在这篇文章中找到很多提示:

    • 或者查看谷歌的其他帖子
    根据我的经验,大多数人在以下步骤中存在问题:

    • 您可以通过ssh登录到机器上吗?(ssh ec2-00-00-00-000.compute-1.amazonaws.com)。尝试使用公共DNS,而不是公共IP进行连接
    • 如果22端口对所有机器开放,您应该在AWS中检查“安全组”
    如果您计划启动10台以上的工作机器,则应在您的机器上安装MPI(性能更好!)


    cloudnumbers.com上的Markus:-)

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

    要上传您自己的SSH密钥,请查看


    一开始有点让人困惑,但您需要弄清楚哪些是访问密钥、证书和密钥对,它们可能出现在带有DSA或RSA的文本文件中。

    我相信.pem文件是X509证书,而不是RSA公钥。您应该在主节点上生成密钥对,如本节所述,并将公钥复制到从节点的授权密钥。我相信@Anatoliy是正确的;他应该对此作出回答,而不仅仅是发表评论,这样我们就可以投票了也许不考虑我对你关于“使用StarCluster”的另一个问题的回答,正如我现在看到的那样,但是试一试在私有IP范围内运行整个集群,一旦我开始这样做,我就不必为密钥或证书操心了。我可以通过ssh连接到从属节点,并且所有机器都属于同一个安全组。我也使用公共DNS进行连接。谢谢链接。不知何故,这比我想象的要复杂得多。这变得容易了,但这并不是因为亚马逊的介绍材料——它们通常只有在一个人掌握了一切之后才有意义。Alestic是一个很好的网站。你认为呢?仅供将来参考,StarCluster有一个“createkey”命令,可以为你创建一个新的EC2密钥对:
    $StarCluster createkey mykey-o~/.ssh/ec2key.rsa