2013-11-23 40 views
2

我剛開始練習AWS EMR。錯誤:在等待ssh時輸入完成的工作流程

我有一個示例字數應用程序設置,運行並從Web界面完成。

遵循指南here,我設置了命令行界面。

所以當我運行命令:

./elastic-mapreduce --list 

我收到

j-27PI699U14QHH  COMPLETED  ec2-54-200-169-112.us-west-2.compute.amazonaws.comWord count 
    COMPLETED  Setup hadoop debugging   
    COMPLETED  Word count   

現在,我想看到的日誌文件。我跑

./elastic-mapreduce --ssh --jobflow j-27PI699U14QHH 

然後我收到以下錯誤的命令:

Error: Jobflow entered COMPLETED while waiting to ssh 

是否有人可以幫助我瞭解這是怎麼回事呢?

感謝,

回答

2

當你安裝上電子病歷工作,這意味着亞馬遜將提供點播了你的時間有限集羣。在那段時間內,您可以免費使用ssh到您的羣集並儘可能多地查看日誌,但是當您的作業完成運行時,您的羣集將被取消!此時,您將無法再ssh,因爲您的集羣根本不存在。

工作流程通常是這樣的:

  • 創建jobflow
  • 將在狀態STARTING幾分鐘。此時,如果您嘗試運行./elastic-mapreduce --ssh --jobflow <jobid>,它只會等待,因爲集羣尚不可用。
  • 過了一會兒,狀態將切換爲RUNNING。如果您已經啓動了上面的ssh命令,它應該會自動將您連接到您的羣集。否則,您可以立即啓動您的ssh命令,它應該直接連接您,無需等待。
  • 根據您的工作性質,RUNNING步驟可能需要一段時間或很短,這取決於您處理的數據量和計算性質。
  • 處理完所有數據後,狀態將切換爲SHUTTING_DOWN。在這一點上,如果你已經ssh編輯之前,你會斷開連接。如果您嘗試在該點使用ssh命令,它將不會連接。
  • 一旦羣集完成關閉,它將進入終端狀態COMPLETEDFAILED,具體取決於您的作業是否成功。此時,您的羣集不再可用,如果您嘗試ssh,則會看到您看到的錯誤。

當然也有例外,您可以設置以交互方式EMR集羣,比如你只是想有蜂巢的設置,然後ssh存在並運行配置單元查詢,你將不得不手動下來把你的集羣。但是,如果您只想運行MapReduce作業,那麼在作業期間只能使用ssh

這就是說,如果你想要做的就是調試,那麼首先就不需要ssh!當您創建jobflow,您必須啓用調試選項,所以你可以做這樣的事情:

./elastic-mapreduce --create --enable-debugging --log-uri s3://myawsbucket 

這也就意味着,所有你的工作將結束日誌被寫入到指定的S3桶(你必須擁有這個桶,當然有權寫入它)。此外,如果你這樣做,你可以在EMR部分之後進入AWS控制檯,你可以在工作旁邊看到一個按鈕來調試,如下圖所示,這應該會讓你的生活變得更容易:

debug button

+0

非常感謝您給出這樣一個清晰而深思熟慮的答案! – ssgao

+1

我還會提到'-alive'標誌允許運行持久集羣,您可以稍後添加任務並在不再需要時終止。 – alko