Intégration d'Apache DolphinScheduler avec EMR et Redshift d'AWS

L'architecture repose sur un lac de données S3 central entouré de composants complémentaires : bases de données, EMR pour Hadoop, entrepôts de données, et outils d'analyse. Cette structure permet une circulation fluide des données entre les différents services.

Composants Clés

  • Amazon EMR : Service managé pour l'exécution de frameworks Big Data (Spark, Hive, Flink)
  • Redshift : Entrepôt de données cloud avec capacités de requête fédérée
  • Apache DolphinScheduler : Orchestrateur de workflows open-source

Avantages d'EMR Face aux Clusters Hadoop On-Premise

  • Mises à jour automatiques des composants open-source
  • Dimensionnement élastique selon la charge
  • Modèles de tarification flexibles (Spot, On-Demand)

Optimisations Complémentaires

EMR Serverless : Exécution sans gestion d'infrastructure
EMR sur EKS : Déploiement conteneurisé sur Kubernetes

Cas Pratique : Migration vers EMR

Un client utilisant initialmeent un cluster CDH on-premise (13 nœuds, traitement en 13h) a migré vers EMR :

  1. Migration initiale sur EMR EC2 (6 nœuds) : réduction à 10h
  2. Passage à Spark : 3.5h
  3. Optimisations (format Parquet, scaling élastique) : 2.4h

Orchetsration avec DolphinScheduler

Répartition des charges de travail :

Type de tâche Plateforme cible Avantage
Petites tâches EMR Serverless Faible consommation mémoire
Tâches volumineuses EMR sur EC2 Arrêt/démarrage programmé
Tâches critiques EMR Serverless Analyse coût/performance

Gestion des Métadonnées

Utilisation d'AWS Glue pour un catalogue unifié, permettant une interopérabilité entre EMR EC2 et EMR Serverless.

Défis Techniques et Solutions

  • Soumission asynchrone : Abstraction via bibliothèque Python
  • Journalisation hétérogène : Uniformisation via DolphinScheduler
  • Interfaces API divergentes : Normalisation des appels

Implémentation Technique

from emr_integration import ProcessingSession

# Configuration pour EMR EC2
emr_ec2 = ProcessingSession(engine_type=0)
emr_ec2.run_query("requete_sql")
emr_ec2.execute_script("pyspark_script")

# Configuration pour EMR Serverless
emr_serverless = ProcessingSession(engine_type=1)
emr_serverless.run_query("requete_sql")
emr_serverless.execute_script("pyspark_script")

Intégration avec Redshift

Fonctionnalités clés :

  • Requêtes fédérées sur sources externes
  • Intégration S3 via Redshift Spectrum
  • Mode Serverless disponible

Contrôle de Concurrence

Deux approches pour gérer les limitations de concurrence :

  1. Extension de concurrence Redshift (coût supplémentaire)
  2. Groupes de ressources dans DolphinScheduler

Intégration CI/CD

Workflow recommandé :

Developer → GitLab → Jenkins → S3 → DolphinScheduler → Redshift

Étiquettes: aws EMR Redshift Apache DolphinScheduler Big Data

Publié le 26 juillet à 14h31