Gestion des ressources

Les pipelines vous permettent de spécifier les processeurs et la mémoire à attribuer au pilote et à chaque exécuteur. Vous pouvez configurer des ressources dans les configurations de pipeline Cloud Data Fusion Studio. Pour en savoir plus, consultez Gérer les configurations de pipeline.

Cette page fournit des conseils sur la quantité de ressources de pilote et d'exécuteur à configurer pour votre cas d'utilisation.

Driver

Comme le pilote exécute peu de travail, son processeur unique et ses 2 Go de mémoire par défaut suffisent généralement à exécuter la plupart des pipelines. Vous devrez peut-être augmenter la mémoire des pipelines contenant de nombreuses étapes ou des schémas volumineux. Comme indiqué dans la section Traitement parallèle des jointures, si le pipeline effectue des jointures en mémoire, les ensembles de données en mémoire doivent également tenir dans la mémoire du pilote.

Executor

Tenez compte des consignes suivantes concernant les ressources de processeur et de mémoire.

Processeur

Le nombre de processeurs attribués à un exécuteur détermine le nombre de tâches que l'exécuteur peut effectuer en parallèle. Chaque partition de données nécessite une tâche de traitement. Dans la plupart des cas, il est plus simple de définir le nombre de processeurs sur un et de se concentrer sur l'ajustement de la mémoire.

Mémoire

Pour la plupart des pipelines, 4 Go de mémoire d'exécution suffisent pour exécuter le pipeline. Des jointures multi-téraoctets fortement biaisées ont été effectuées avec 4 Go de mémoire d'exécution. Il est possible d'améliorer la vitesse d'exécution en augmentant la quantité de mémoire, mais cela nécessite une bonne compréhension de vos données et de votre pipeline.

Spark divise la mémoire en plusieurs sections. Une section est réservée à l'utilisation interne de Spark, et une autre à l'exécution et au stockage.

Par défaut, la section de stockage et d'exécution représente environ 60% de la mémoire totale. La propriété spark.memory.fraction configuration de Spark (par défaut, 0,6) contrôle ce pourcentage. Cette valeur fonctionne bien pour la plupart des charges de travail et n'a généralement pas besoin d'être ajustée.

La section "Stockage et exécution" est ensuite divisée en espaces distincts pour le stockage et l'exécution. Par défaut, ces espaces sont de la même taille, mais vous pouvez les ajuster en définissant spark.memory.storageFraction (par défaut, 0,5) pour contrôler le pourcentage de l'espace réservé au stockage.

L'espace de stockage stocke les données mises en cache. L'espace d'exécution stocke les données de brassage, de jointure, de tri et d'agrégation. Si l'espace est insuffisant dans la section d'exécution, Spark peut en utiliser une partie pour stocker des données. Toutefois, les données d'exécution n'utilisent jamais l'espace de stockage.

Si vous savez que votre pipeline ne met aucune donnée en cache, vous pouvez réduire la fraction de stockage pour laisser plus de place aux exigences d'exécution.

Point à prendre en compte: mémoire du conteneur YARN

Le paramètre de mémoire de l'exécuteur contrôle la quantité de mémoire de tas attribuée aux exécuteurs. Spark ajoute une quantité supplémentaire de mémoire pour la mémoire hors tas, qui est contrôlée par le paramètre spark.executor.memoryOverhead, qui est défini par défaut sur 384 Mo. Cela signifie que la quantité de mémoire que YARN réserve pour chaque exécuteur est supérieure au nombre défini dans la configuration des ressources du pipeline. Par exemple, si vous définissez la mémoire de l'exécuteur sur 2 048 Mo, Spark ajoute 384 Mo à ce nombre et demande à YARN un conteneur de 2 432 Mo. De plus, YARN arrondit le numéro de requête à un multiple de yarn.scheduler.increment-allocation-mb, qui est défini par défaut sur la valeur yarn.scheduler.minimum-allocation-mb. Si elle est définie sur 512, YARN arrondit 2 432 m à 2 560 m. Si la valeur est définie sur 1 024, YARN arrondit 2 432 Mo à 3 072 Mo. Gardez ce point à l'esprit lorsque vous déterminez la taille de chaque nœud de calcul de votre cluster.