2012-10-13 26 views
3

我有一個工作在32個實例上使用Hadoop 0.20運行。它已運行了9個小時,沒有錯誤。在那段時間裏它已經處理了3800個任務,但我注意到只有兩個任務似乎卡住了,並且一直運行了幾個小時(顯​​然是因爲他們沒有超時而響應)。任務通常不會超過15分鐘。我不想失去已經完成的所有工作,因爲這花費了我很多錢。我真的只想殺這兩個任務,讓Hadoop重新分配它們,或者只是把它們算作失敗。直到他們停下來,我無法從其他3798地圖中獲得減少的結果!如何在Amazon EMR上終止正在運行的映射任務?

但我無法弄清楚如何做到這一點。我也考慮過試圖找出哪些實例正在運行的任務,然後終止的情況下,但

  1. 我不知道如何找出哪些情況下是罪魁禍首
  2. 恐怕會產生意想不到的效果。

我該如何殺死個別地圖任務?

+1

儘管我仍然對這個答案感興趣以備將來參考,但我發現任務會在3小時後自殺。所以他們現在已經死了。 –

回答

6

一般來說,Hadoop集羣上,你可以通過發出殺死特定的任務:

hadoop job -kill-task [attempt_id] 

這將殺死指定地圖的任務,並重新提交它與一個新的ID的不同 節點上。

要獲得關於Jobtrackerweb UI有問題的地圖任務 的attemp_id導航,點擊它,注意它的ID(如:attempt_201210111830_0012_m_000000_0)

+0

當我在本地Hadoop集羣上運行時,這非常棒,並且非常感謝。我怎樣才能使這項工作在電子病歷?是否有彈性mapreduce命令行選項?我找不到一個。 –

+0

我確實看到我可以進入主節點:'./elastic-mapreduce -ssh -jobflow JobFlowID'。我可以執行上述命令嗎? –

+0

將ssh添加到主節點(docs:http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/emr-connect-master-node-ssh.html)併發出bin/hadoop作業以查看您擁有的選項 –

1

ssh來作爲由羅蘭提到的主節點,執行:

bin/hadoop job -list 
bin/hadoop job –kill <JobID> 
相關問題