ОК. Благодаря многочисленным исследованиям и поддержке я думаю, что решил эту проблему.Это связано со спекулятивным исполнением.По сути, если процесс не завершается вовремя, запускается новый процесс и ему предоставляется та же работа.Когда начальный процесс наконец завершается, вторичный процесс отменяется и не очень хорошо очищается после себя.Отключение этой «функции» решило мою проблему.
Для этого вам нужно будет создать собственное определение конвейера.К нему добавьте:
{
"name": "disableSpeculativeExecution",
"id": "disableSpeculativeExecution",
"type": "EmrConfiguration",
"classification": "mapred-site",
"property": [
{
"ref": "disableSpeculativeExecutionForMapperTasks"
},
{
"ref": "disableSpeculativeExecutionForMapperTasks"
}
]
},
{
"name": "disableSpeculativeExecutionForMapperTasks",
"id": "disableSpeculativeExecutionForMapperTasks",
"type": "Property",
"key": "mapreduce.map.speculative",
"value": "false"
},
{
"name": "disableSpeculativeExecutionForReducerTasks",
"id": "disableSpeculativeExecutionForReducerTasks",
"type": "Property",
"key": "mapreduce.reduce.speculative",
"value": "false"
},
Затем внутри определения EMRClusterForBackup добавьте жирную ссылку:
"configuration": {"ref": "disableSpeculativeExecution"}
{
"name": "EmrClusterForBackup",
"coreInstanceCount": "1",
"coreInstanceType": "m3.xlarge",
"releaseLabel": "emr-5.13.0",
"masterInstanceType": "m3.xlarge",
"id": "EmrClusterForBackup",
"region": "#{myDDBRegion}",
"type": "EmrCluster",
"terminateAfter" : "12 Hours",
"configuration": {
"ref": "disableSpeculativeExecution"
}
},