相对于我之前的类似的问题 https://stackoverflow.com/questions/7241244/using-aws-for-parallel-processing-with-r,我尝试在AWS上使用snow/snowfall进行并行计算。
我所做的是:
- In the
sfInit()
函数,我提供了公共DNSsocketHosts
参数像这样sfInit(parallel=TRUE,socketHosts =list("ec2-00-00-00-000.compute-1.amazonaws.com"))
- 返回的错误是
Permission denied (publickey)
- 然后我按照说明(我认为正确!)http://www.imbi.uni-freiburg.de/parallel/ http://www.imbi.uni-freiburg.de/parallel/在“无密码安全 Shell (SSH) 登录”部分
- 我只是将在 AWS 上创建的 .pem 文件的内容放入我想要从主 AWS 实例以及主 AWS 实例连接到的 AWS 实例的 ~/.ssh/authorized_keys 中
我错过了什么吗?
如果用户能够分享他们在AWS上使用snow的经验,我将非常感激。
非常感谢您的建议。
更新:
我只是想更新针对我的具体问题找到的解决方案:
- 我使用 StarCluster 设置我的 AWS 集群:星团 http://web.mit.edu/stardev/cluster/docs/0.92rc2/index.html
- 安装包
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 https://forums.aws.amazon.com/message.jspa?messageID=241341
- 或者检查谷歌是否有其他帖子。
根据我的经验,大多数人在以下步骤中都会遇到问题:
- 你能通过 ssh 登录到机器吗? (ssh ec2-00-00-00-000.compute-1.amazonaws.com)。尝试使用公共 DNS,而不是公共 IP 进行连接。
- 如果 22 端口对所有机器开放,您应该检查 AWS 中的“安全组”!
如果您计划启动 10 台以上的工作机器,您应该在您的机器上安装 MPI(性能更好!)
来自 cloudnumbers.com 的马库斯:-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)