Problèmes de mémoire Spark
Vérification d'un problème de mémoire
Les problèmes de mémoire entraînent souvent des messages d'erreur tels que les suivants :
SparkException: Job aborted due to stage failure: Task 3 in stage 0.0 failed 4 times, most recent failure: Lost task 3.3 in stage 0.0 (TID 30) (10.139.64.114 executor 4): ExecutorLostFailure (executor 4 exited caused by one of the running tasks) Reason: Remote RPC client disassociated. Likely due to containers exceeding thresholds, or network issues. Check driver logs for WARN messages.
Ces messages d'erreur sont toutefois souvent génériques et peuvent être dus à d'autres problèmes. Ainsi, si vous soupçonnez un problème de mémoire, vous pouvez vérifier le problème en doublant la mémoire par cœur pour voir si cela a un impact sur votre problème.
Par exemple, si vous avez un type de worker avec 4 cœurs et 16 Go de mémoire, vous pouvez essayer de passer à un type de worker qui a 4 cœurs et 32 Go de mémoire. Cela vous donnera 8 Go par cœur, contre 4 Go par cœur auparavant. C'est le rapport entre les cœurs et la mémoire qui importe ici. Si la défaillance prend plus de temps avec la mémoire supplémentaire ou ne se produit pas du tout, c'est un bon signe que vous êtes sur la bonne voie.
Si vous pouvez résoudre votre problème en augmentant la mémoire, c'est excellent ! C'est peut-être la solution. Si cela ne résout pas le problème, ou si vous ne pouvez pas supporter le coût supplémentaire, vous devriez approfondir la question.
Causes possibles
Il existe de nombreuses raisons potentielles aux problèmes de mémoire :
- Trop peu de partitions shuffle
- Diffusion large
- UDFs
- Fonction de fenêtre sans instruction
PARTITION BY - Décalage
- État du streaming