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