Formation en IA & Data: Apache Spark 4 sur Kubernetes – Développement, déploiement, observabilité et optimisation de workloads Big Data - Ascent Formation
Retour aux formations
IA & Data

Apache Spark 4 sur Kubernetes – Développement, déploiement, observabilité et optimisation de workloads Big Data

3 jour(s)21h

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é

Développeurs, Data Engineers, Data Scientists, Architectes data et chefs de projet technique
Profils en charge du déploiement et de l'exploitation de Spark.

Prérequis

Avoir déjà développé ou maintenu au moins une application Spark, ou disposer d'une expérience concrète d'un moteur de traitement distribué équivalent. Connaissance des bases de Kubernetes requise : pods, images, namespaces, ressources CPU/mémoire, kubectl. Bonne maîtrise de Python ou Java et de SQL.

Déroulé du programme

1

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
2

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
3

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

Tarif

Sur demande