我有一個通常工作正常的EMR流作業(Python)(例如10臺機器處理200個輸入)。然而,當我運行它針對大數據集(12個機加工總共6000個輸入,在每個輸入大約20秒),2.5小時嘎吱嘎吱我得到以下錯誤的後:Amazon Elastic MapReduce - SIGTERM
java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 143
at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:372)
at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:586)
at org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:135)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:57)
at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:36)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:441)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:377)
at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1132)
at org.apache.hadoop.mapred.Child.main(Child.java:249)
如果我在讀這是正確的,子程序因代碼143失敗,因爲有人向流作業發送了SIGTERM信號。
我的理解是否正確?如果是這樣的話:EMR基礎架構何時發送SIGTERM?
您是否檢查了CloudWatch指標以查看您是否達到某種類型的IO限制?從我的經驗來看,一旦你達到IO極限,一些奇怪的事情開始發生。我不知道您用於數據節點的實例類型,但是我建議在運行更大的作業時升級到更快的IO性能。 – Edenbauer 2012-08-16 00:39:17
事情是,每個任務都是CPU限制的,具有罕見和零星的I/O。它的功能是從S3加載一個文件,然後大約20秒完成大量CPU處理。每隔5秒它就會向S3存儲另一個(中間)文件。它使用了一些外部庫(lxml,scikit-learn),並且我認爲其中一個可能會讓我失敗(由於內存消耗急劇上升?),而EMR基礎架構正在發送一個SIGTERM。爲了驗證這一點,我試圖瞭解EMR可能會發生什麼情況時的情況。 – slavi 2012-08-16 08:18:31