Apache Spark 4 sur Kubernetes – Développement, déploiement, observabilité et optimisation de workloads Big Data
Description
Cette formation s'adresse à des profils ayant déjà une pratique de Spark. Elle vise la montée en compétence sur l'exploitation de workloads Spark en environnement Kubernetes, avec un accent particulier sur le packaging, le dimensionnement, la mémoire, l'observabilité et le diagnostic de performance. Elle ne couvre pas les fondamentaux Spark débutants. À l'issue de la formation, le stagiaire sera capable de concevoir, packager, déployer et exploiter une application Apache Spark 4 sur Kubernetes, en maîtrisant les principaux paramètres de ressources, de mémoire, d'allocation dynamique et de diagnostic de performance. Le fil rouge est un cas pratique continu sur les trois jours : développement d'une application Spark, packaging en image, déploiement sur Kubernetes, configuration des ressources, puis diagnostic et optimisation d'un incident de performance.
Objectifs pédagogiques
- Exploiter les nouveautés utiles d'Apache Spark 4 et l'API structurée (DataFrames, Spark SQL)
- Développer et packager une application Spark en image runtime pour un déploiement en cluster
- Déployer des applications Spark sur Kubernetes via spark-submit et Spark Operator
- Comprendre le modèle de mémoire Spark et dimensionner les ressources des executors
- Gérer l'allocation des ressources et l'allocation dynamique sur Kubernetes, shuffle tracking inclus
- Diagnostiquer et optimiser une exécution en corrélant Spark UI, Spark History Server et signaux Kubernetes
Public concerné
Prérequis
Déroulé du programme
Jour 1 - Spark 4, API structurée et développement d'applications :
- Apache Spark 4 : nouveautés utiles et architecture d'exécution
- Architecture d'exécution : driver, executors, cluster managers (niveau avancé)
- Environnement d'exécution Spark 4 : Java 17, compatibilités runtime et impacts sur les images Docker
- Sélection des nouveautés Spark 4 pertinentes pour l'exploitation : mode ANSI, type VARIANT, journalisation structurée ; mention rapide de Spark Connect, SQL scripting, syntaxe pipe et collations (sans inventaire exhaustif)
- API structurée et développement
- DataFrames et Spark SQL comme API de référence ; Datasets typés selon les langages ; place résiduelle des RDD
- Spark SQL : sources de données, performance, lecture du plan d'exécution
- Packaging d'une application Spark et de ses dépendances
- Travaux pratiques (fil rouge, étape 1) : développement de l'application Spark de référence, transformations DataFrame et requêtes Spark SQL
Jour 2 - Packaging, déploiement Kubernetes, mémoire et allocation:
- Image runtime et dépendances
- Images Spark officielles et images custom
- Gestion des dépendances applicatives : jars, packages Python, connecteurs
- Registry, tags, compatibilité des versions Spark / Java / Python
- Paramètre spark.kubernetes.container.image et bonnes pratiques de reproductibilité
- Travaux pratiques (fil rouge, étape 2) : construction de l'image runtime de l'application
- Déploiement de Spark sur Kubernetes
- Kubernetes comme ordonnanceur natif : architecture des pods (driver, executors), configuration des ressources, volumes, secrets, labels, pod templates
- Soumission via spark-submit en mode cluster
- Spark Operator : intérêt, limites, cas d'usage, soumission déclarative via SparkApplication et gestion du cycle de vie applicatif
- Travaux pratiques (fil rouge, étape 3) : déploiement de l'application sur le cluster Kubernetes
- Modèle de mémoire et allocation des ressources
- Décomposition de la mémoire d'un executor : heap (executor-memory), off-heap, memory overhead
- Mapping mémoire pod / cgroups (requests, limits) et prévention des erreurs OOMKilled
- Allocation des ressources : CPU et mémoire par pod, ResourceProfile
- Allocation dynamique sur Kubernetes : principe, shuffle tracking, limites opérationnelles (absence d'external shuffle service en mode Kubernetes), erreurs fréquentes et stratégies de contournement
- Travaux pratiques (fil rouge, étape 4) : dimensionnement mémoire et configuration de l'allocation des ressources
Jour 3 - Observabilité, diagnostic et optimisation des performances:
- Lecture des métriques Spark : Spark UI et History Server
- Spark UI : onglets Jobs, Stages, Storage, Environment, Executors ; accès sur Kubernetes via port-forwarding ou ingress
- Lecture des métriques d'exécution : shuffle, mémoire d'exécution, spill, temps d'attente
- Spark History Server : consultation et analyse comparative des exécutions terminées
- Diagnostic au niveau Kubernetes
- Lecture des logs driver et executors
- Analyse des statuts de pods : Pending, OOMKilled, ImagePullBackOff, CrashLoopBackOff
- Usage de kubectl logs, kubectl describe, événements Kubernetes
- Request/limit insuffisants, saturation des nodes
- Corrélation Spark UI / Kubernetes / ressources cluster
- Diagnostic et optimisation
- Identification des goulots d'étranglement : skew, shuffle, spill mémoire
- Stratégies d'optimisation : partitionnement, AQE (Adaptive Query Execution), mémoire et ressources
- Travaux pratiques (fil rouge, étape 5) : diagnostic d'un incident de performance en corrélant Spark UI et signaux Kubernetes, puis optimisation et validation du gain
- Synthèse : bonnes pratiques d'exploitation de Spark sur Kubernetes
Informations
Durée
3 jour(s)
21h
Sur demande
Formations similaires
Migration vers le Cloud
Sur demande
Agents IA — Concevoir des systèmes autonomes avec LangChain et LangGraph - Avancé
Sur demande
AI Act européen — Comprendre vos obligations et vous mettre en conformité - Niveau débutant
Sur demande
Analyse bayésienne (4-107)
Sur demande