Desejo solucionar falhas de estágio nas aplicações Apache Spark no Amazon EMR.
Breve descrição
Você pode receber falhas de estágio quando uma tarefa do Spark tem um problema. Essas falhas são causadas por problemas de hardware, configurações incorretas do Spark ou problemas de código. Quando ocorre uma falha de estágio, os logs do driver do Spark relatam uma exceção semelhante à seguinte:
“org.apache.spark.SparkException: Job aborted due to stage failure: Task XXX in stage YYY failed 4 times, most recent failure: Lost task XXX in stage YYY (TID ZZZ, ip-xxx-xx-x-xxx.compute.internal, executor NNN): ExecutorLostFailure (executor NNN exited caused by one of the running tasks) Reason: (example-reason)”
Resolução
Identifique o código de motivo dos trabalhos do Spark que você envia com o cliente --deploy-mode
O código do motivo está localizado na exceção mostrada no terminal.
Se você enviar o trabalho a partir do Amazon EMR Steps, o código do motivo estará localizado no arquivo stderr no console do Amazon EMR. Você também pode obter os logs stderr do estágio no local do Amazon Simple Storage Service (Amazon S3) que você especificou para o log em cluster. Por exemplo, você pode usar o caminho do arquivo s3://example-log-bucket/example-cluster-id/steps/example-step-id/ para encontrar os logs.
Para identificar falhas de estágio nos logs da aplicação YARN, execute o seguinte comando no nó primário:
yarn logs -applicationId example-application-id | grep "Job aborted due to stage failure" -A 10
Observação: substitua example-application-id pelo ID da aplicação Spark.
Você pode obter a aplicação YARN no local do Amazon S3 que você especificou para o registro do cluster. Por exemplo, você pode usar o caminho do arquivo s3//example-log-bucket/example-cluster-id/containers/example-application-id/. Você também pode obter os logs da aplicação YARN do YARN ResourceManager no contêiner principal da aplicação.
Resolva a causa raiz
Depois de identificar a exceção, use um dos seguintes artigos do Knowledge Center da AWS para resolver o problema: