私はEMRストリーミングジョブ(Python)を持っていますが、これは通常は正常に機能します(たとえば、10台のマシンが200個の入力を処理します)。ただし、大規模なデータセット(12台のマシンが合計6000の入力を処理し、入力ごとに約20秒)に対して実行すると、2.5時間のクランチの後、次のエラーが発生します。
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)
これを正しく読んでいると、誰かがSIGTERMシグナルをストリーミングジョブに送信したため、サブプロセスがコード143で失敗しました。
私の理解は正しいですか?その場合:EMRインフラストラクチャはいつSIGTERMを送信しますか?