Estou com um problema em que um exectutor está criando tarefas que nunca terminam, fazendo com que todo o processo seja interrompido. As tarefas normalmente concluídas duram cerca de 4 segundos, mas duram uma hora e meia. Isso não acontece consistentemente, eu diria em torno de 1/3 do tempo.
Eu tenho 32 nós que são de c3.8xlarge, então eles têm Núcleos: 32 Memória: 60 GiB Armazenamento: 640 SSD GB
Eu tenho RDDs de várias fontes que estão sendo processadas e combinadas. A tarefa parece ficar paralisada como uma parte consistente do DAG, embora eu não tenha verificado sua localização o suficiente para ter certeza de que 100% deles são sempre o mesmo local. No ponto em que observei, todos os RDDs foram combinados em um.
Alguns sintomas estranhos que notei:
São apenas tarefas em um executor que estão ficando presas. Existem algumas tarefas desse executor que terminaram, mas acabam com 32 tarefas paradas.
As tarefas paradas não têm tempo de inicialização na interface do usuário. 0ms atraso do agendador, tempo de desserização da tarefa de 0 ms, tempo de leitura aleatório de 0 ms. Existe apenas o tempo de execução do executor.
Um dump de encadeamento do executor emperrado mostra o executor de execução de tarefa do executor (32-63), em vez do trabalhador de início de tarefa do Executor normal (0-31). Estes estão todos no estado de thread “WAITING”. O estágio eventualmente chegará ao ponto em que todas as tarefas, exceto a de 32, foram concluídas, de modo que, enquanto elas estiverem presas, todas as outras tarefas ainda serão criadas e terminarão normalmente.
Isso começou a acontecer quando atualizei do Spark 1.6.1 para 2.1.0. Houve noproblem com Spark 1.6.1.