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.
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 |
|
|
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 :
|
|
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
|
|
spark.celeborn.shuffle.writer |
Celeborn prend en charge les modes d'écriture suivants :
|
|
spark.celeborn.master.endpoints |
Spécifiez les endpoints au format <celeborn-master-ip>:<celeborn-master-port>. Paramètres :
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 ou . 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 , toutes les tâches Spark utilisent le service Celeborn.
Si vous sélectionnez , 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.
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). |
|
|
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 |
|
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
-
Sur la page Status du service Celeborn, dans la colonne Actions du composant CelebornMaster, sélectionnez .
RemarquePour un cluster non haute disponibilité, vous pouvez également cliquer sur Restart dans la colonne Actions du composant CelebornMaster.
Dans la boîte de dialogue, désactivez le commutateur Rolling Execution, saisissez un motif d'exécution, puis cliquez sur OK.
Dans la boîte de dialogue de confirmation, cliquez sur OK.
> enableCeleborn