Tous les produits
Search
Centre de documentation

E-MapReduce:Celeborn

Dernière mise à jour :Aug 20, 2026

Celeborn traite les données intermédiaires pour améliorer la stabilité, la flexibilité et les performances des moteurs de big data. Cette rubrique explique comment utiliser le service Celeborn.

Contexte

Les solutions de shuffle existantes présentent les inconvénients suivants :

  • Dans les scénarios à fort volume de données, les écritures de shuffle peuvent provoquer des débordements (spills), entraînant une amplification des écritures.

  • Lors de la lecture du shuffle, un grand nombre de petits paquets réseau peut provoquer des erreurs de réinitialisation de connexion.

  • La lecture du shuffle génère de nombreuses petites requêtes d'E/S et des lectures aléatoires, ce qui surcharge les disques et le processeur.

  • Lorsque le nombre de mappeurs (M) et de réducteurs (N) atteint plusieurs milliers, le nombre de connexions M × N rend l'achèvement des tâches pratiquement impossible.

  • Le NodeManager et le Spark External Shuffle Service s'exécutent dans le même processus. Lorsque le volume de données de shuffle est extrêmement important, le NodeManager redémarre souvent, ce qui déstabilise la planification YARN.

Celeborn résout ces problèmes liés au processus de shuffle et offre les avantages suivants :

  • Utilise un shuffle de type push plutôt que pull pour réduire la pression mémoire des mappeurs.

  • Prend en charge l'agrégation des E/S, réduisant le nombre de connexions de lecture de shuffle de M × N à N et convertissant les lectures aléatoires en lectures séquentielles.

  • Prend en charge un mécanisme à deux réplicas pour réduire la probabilité d'échecs de récupération.

  • Prend en charge une architecture dissociant le calcul du stockage, permettant de déployer le service de shuffle dans un environnement matériel dédié, isolé du cluster de calcul.

  • Élimine la dépendance au disque local lors de l'exécution de Spark sur Kubernetes.

La figure suivante illustre l'architecture de Celeborn.Celeborn

Prérequis

Vous avez créé un cluster EMR DataLake ou un cluster personnalisé et sélectionné le service Celeborn. Pour plus d'informations sur la création d'un cluster, consultez Créer un cluster.

Limites

Cette rubrique s'applique uniquement aux clusters des versions suivantes.

Cluster

Version

Cluster DataLake

EMR-3.45.0 ou ultérieure, et EMR-5.11.0 ou ultérieure.

Cluster personnalisé

EMR-3.45.0 ou ultérieure, et EMR-5.11.0 ou ultérieure.

Procédure

Configuration de Spark

Paramètre

Description

spark.shuffle.manager

  • Pour les versions 0.4.x et ultérieures, la valeur doit être org.apache.spark.shuffle.celeborn.SparkShuffleManager.

  • Pour les versions 0.3.x et antérieures, la valeur doit être org.apache.spark.shuffle.celeborn.RssShuffleManager.

spark.serializer

La valeur doit être org.apache.spark.serializer.KryoSerializer.

spark.celeborn.push.replicate.enabled

Indique si le mécanisme à deux réplicas est activé. Valeurs possibles :

  • true (par défaut) : active le mécanisme à deux réplicas.

  • false : désactive le mécanisme à deux réplicas.

spark.shuffle.service.enabled

Définissez ce paramètre sur false pour utiliser Celeborn.

Pour utiliser Celeborn, vous devez désactiver le service External Shuffle Service existant. La fonctionnalité Dynamic Allocation de Spark fonctionne comme prévu lorsque Celeborn est activé.

Remarque
  • Si spark.shuffle.service.enabled est défini sur true, Celeborn n'est pas utilisé.

  • Alibaba Cloud Spark et Spark open source 3,5 sont compatibles avec Celeborn.

spark.celeborn.shuffle.writer

Celeborn prend en charge les modes d'écriture suivants :

  • hash (par défaut) : utilise davantage de mémoire si la concurrence des partitions est élevée.

  • sort : utilise une quantité fixe de mémoire et fonctionne de manière stable même avec une concurrence élevée des partitions.

spark.celeborn.master.endpoints

Spécifiez les endpoints au format <celeborn-master-ip>:<celeborn-master-port>.

Paramètres :

  • <celeborn-master-ip> : adresse IP publique du nœud master.

  • <celeborn-master-port> : cette valeur est fixée à 9097.

Pour un cluster haute disponibilité, configurez les adresses IP de tous les nœuds master.

spark.sql.adaptive.enabled

Celeborn prend en charge l'exécution adaptative des requêtes (AQE). Pour des performances de shuffle optimales, désactivez le lecteur de shuffle local.

Définissez respectivement ces paramètres sur true, false et true.

spark.sql.adaptive.localShuffleReader.enabled

spark.sql.adaptive.skewJoin.enabled

Le service Spark permet une configuration en un clic pour utiliser le service Celeborn.

  • Pour EMR-5.11.1 et versions ultérieures, ainsi que EMR-3.45.1 et versions ultérieures :

    Sur la page Status du service Spark, dans la section Service Overview, activez ou désactivez le commutateur enableCeleborn.

  • Pour EMR-5.11.0 et EMR-3.45.0 :

    Sur la page Status du service Spark, dans la section Components, recherchez SparkThriftServer. Dans la colonne Actions, choisissez more > enableCeleborn ou more > disableCeleborn. Cette action modifie automatiquement les paramètres de configuration Spark listés ci-dessus, redémarre SparkThriftServer et met à jour les fichiers spark-defaults.conf et spark-thriftserver.conf.

    • Si vous sélectionnez more > enableCeleborn, toutes les tâches Spark utilisent le service Celeborn.

    • Si vous sélectionnez more > disableCeleborn, aucune tâche Spark n'utilise le service Celeborn.

Configuration de Celeborn

Consultez et modifiez tous les paramètres de configuration de Celeborn sur la page de configuration du service Celeborn.

Important

Les valeurs des paramètres varient selon le groupe de nœuds (par exemple, CORE ou TASK).

Paramètre

Description

Valeur par défaut

celeborn.worker.flusher.threads

Nombre de threads pour l'écriture des données sur le disque (HDD ou SSD).

  • HDD : 1

  • SSD : 8

CELEBORN_WORKER_OFFHEAP_MEMORY

Taille de la mémoire hors tas (off-heap) du worker.

Calculée automatiquement en fonction de la configuration du cluster.

celeborn.application.heartbeat.timeout

Délai d'expiration du heartbeat de l'application. Si ce délai est atteint, le système libère les ressources de l'application.

120 s

celeborn.worker.flusher.buffer.size

Taille du tampon de vidage (flush). Le vidage est déclenché lorsque cette taille est dépassée.

256 Ko

celeborn.metrics.enabled

Indique si la surveillance est activée. Valeurs possibles :

  • true : active la surveillance.

  • false : désactive la surveillance.

true

CELEBORN_WORKER_MEMORY

Taille de la mémoire tas (heap) du worker.

1 Go

CELEBORN_MASTER_MEMORY

Taille de la mémoire tas (heap) du master.

2 Go

Redémarrage des composants Celeborn

  1. Sur la page Status du service Celeborn, dans la colonne Actions du composant CelebornMaster, sélectionnez more > restart_clean_meta.

    Remarque

    Pour un cluster non haute disponibilité, vous pouvez également cliquer sur Restart dans la colonne Actions du composant CelebornMaster.

  2. Dans la boîte de dialogue, désactivez le commutateur Rolling Execution, saisissez un motif d'exécution, puis cliquez sur OK.

  3. Dans la boîte de dialogue de confirmation, cliquez sur OK.