Par défaut, Cloud Data Fusion utilise la mise à l'échelle automatique comme profil de calcul. Il est difficile d'estimer le nombre optimal de nœuds de calcul du cluster pour une charge de travail ; la plupart du temps, une taille de cluster unique pour un pipeline entier n'est pas la solution idéale. L'autoscaling Managed Service pour Apache Spark fournit un mécanisme permettant d'automatiser la gestion des ressources de cluster et d'activer l'autoscaling des VM de nœud de calcul du cluster. Pour en savoir plus, consultez Autoscaling.
Sur la page Configuration de calcul, où vous pouvez voir une liste de profils, se trouve une colonne Nombre total de cœurs, qui indique le nombre maximal de processeurs virtuels que le profil peut utiliser, par exemple Up to 84.
Si vous souhaitez utiliser le profil de calcul Managed Service pour Apache Spark , vous pouvez gérer la taille des clusters en fonction de la taille du pipeline.
Nœud maître
Les nœuds maîtres utilisent des ressources proportionnellement au nombre de pipelines ou d'applications supplémentaires en cours d'exécution sur le cluster. Si vous exécutez des pipelines sur des clusters éphémères, utilisez 2 processeurs et 8 Go de mémoire pour les nœuds maîtres. Si vous utilisez des clusters persistants, vous devrez peut-être disposer de nœuds maîtres plus importants pour faire face au workflow. Pour déterminer si vous avez besoin de nœuds maîtres plus volumineux, vous pouvez surveiller l'utilisation de la mémoire et des processeurs sur le nœud. Nous vous recommandons de dimensionner vos nœuds de calcul avec au moins deux processeurs et 8 Go de mémoire. Si vous avez configuré vos pipelines pour utiliser une plus grande quantité de mémoire, vous devez utiliser des nœuds de calcul plus volumineux.
Pour minimiser le temps d'exécution, assurez-vous que votre cluster dispose de suffisamment de nœuds pour permettre un traitement en parallèle autant que possible.
Nœuds de calcul
Les sections suivantes décrivent les aspects du dimensionnement des nœuds de calcul.
Processeur et mémoire
Nous vous recommandons de dimensionner vos nœuds de calcul avec au moins 2 processeurs et 8 Go de mémoire. Si vous avez configuré vos pipelines pour utiliser une plus grande quantité de mémoire, utilisez des nœuds de calcul plus volumineux. Par exemple, avec un nœud de calcul de 4 processeurs et 15 Go, chaque nœud de calcul disposera de 4 processeurs et de 12 Go pour exécuter les conteneurs YARN. Si votre pipeline est configuré pour exécuter des exécuteurs de 1 CPU et 8 Go, YARN ne peut pas exécuter plus d'un conteneur par nœud de calcul. Chaque nœud de calcul disposerait de 3 CPU et de 4 Go supplémentaires qui seraient inutilisés, car ils ne pourraient servir à exécuter quoi que ce soit. Pour maximiser l'utilisation des ressources sur votre cluster, vous devez faire en sorte que la mémoire et les processeurs YARN soient un multiple exact de la quantité nécessaire par exécuteur Spark. Vous pouvez vérifier la quantité de mémoire réservée par chaque nœud de calcul pour YARN en consultant la propriété yarn.nodemanager.resource.memory-mb dans YARN.
Si vous utilisez Managed Service for Apache Spark, la mémoire disponible pour les conteneurs YARN correspondra à environ 75 % de la mémoire de la VM. La taille minimale du conteneur YARN est également ajustée en fonction de la taille des VM de nœud de calcul. Le tableau suivant présente quelques tailles de nœuds de calcul courantes et les paramètres YARN correspondants.
| Processeur du nœud de calcul | Mémoire du nœud de calcul (Go) | Mémoire du nœud YARN (Go) | Mémoire d'allocation minimale YARN (Mo) |
|---|---|---|---|
| 1 | 4 | 3 | 256 |
| 2 | 8 | 6 | 512 |
| 4 | 16 | 12 | 1 024 |
| 8 | 32 | 24 | 1 024 |
| 16 | 64 | 51 | 1 024 |
N'oubliez pas que Spark demande plus de mémoire que la mémoire de l'exécuteur définie pour le pipeline et que YARN arrondit ce montant demandé à la valeur supérieure. Par exemple, supposons que vous ayez défini la mémoire de l'exécuteur sur 2 048 Mo et que vous n'ayez pas indiqué de valeur pour spark.yarn.executor.memoryOverhead, ce qui signifie que la valeur par défaut de 384 Mo est utilisée. Cela signifie que Spark demande 2 048 Mo + 384 Mo pour chaque exécuteur, ce que YARN arrondit à un multiple exact de l'allocation minimale de YARN. Lors de l'exécution sur un nœud de calcul de 8 Go, l'allocation minimale de YARN étant de 512 Mo, elle est arrondie à 2,5 Go. Cela signifie que chaque nœud de calcul peut exécuter deux conteneurs, en utilisant tous les processeurs disponibles, mais en laissant 1 Go de mémoire YARN (6 Go - 2,5 Go - 2,5 Go) inutilisé. Cela signifie que le nœud de calcul peut en fait être dimensionné un peu plus petit, ou que les exécuteurs peuvent recevoir un peu plus de mémoire.
Lors de l'exécution sur un nœud de calcul de 16 Go, 2 048 Mo + 1 024 Mo sont arrondis à 3 Go, car l'allocation minimale de YARN est de 1 024 Mo.
Cela signifie que chaque nœud de calcul peut exécuter quatre conteneurs, avec tous les processeurs et la mémoire YARN en cours d'utilisation.
Pour vous aider à mieux comprendre, le tableau suivant indique les tailles de worker recommandées pour certaines tailles d'exécuteur courantes.
| Processeur de l'exécuteur | Mémoire de l'exécuteur (Mo) | Processeur du nœud de calcul | Mémoire du nœud de calcul ( Go) |
|---|---|---|---|
| 1 | 2 048 | 4 | 15 |
| 1 | 3 072 | 4 | 21 |
| 1 | 4096 | 4 | 26 |
| 2 | 8 192 | 4 | 26 |
Par exemple, un nœud de calcul de 26 Go se traduit par 20 Go de mémoire utilisable pour exécuter des conteneurs YARN. Avec une mémoire d'exécuteur définie sur 4 Go, 1 Go est ajouté en tant que surcharge, ce qui signifie que chaque exécuteur dispose de conteneurs YARN de 5 Go. Cela signifie que le nœud de calcul peut exécuter quatre conteneurs sans qu'il ne reste de ressources supplémentaires. Vous pouvez également multiplier la taille des nœuds de calcul. Par exemple, si la mémoire de l'exécuteur est définie sur 4 096 Go, un nœud de calcul avec 8 processeurs et 52 Go de mémoire fonctionnera également bien. Les VM Compute Engine limitent la quantité de mémoire dont la VM peut disposer en fonction du nombre de cœurs. Par exemple, une VM à quatre cœurs doit disposer d'au moins 7,25 Go de mémoire et d'au plus 26 Go de mémoire. Cela signifie qu'un exécuteur configuré pour utiliser 1 processeur et 8 Go de mémoire utilise 2 processeurs et 26 Go de mémoire sur la VM. Si les exécuteurs sont configurés pour utiliser 2 processeurs et 8 Go de mémoire, tous les processeurs sont utilisés.
Disque
L'espace disque est important pour certains pipelines, mais pas pour tous. Si votre pipeline ne contient aucun brassage, le disque ne sera utilisé que lorsque Spark manquera de mémoire et devra décharger des données sur le disque. Pour ces types de pipelines, la taille et le type de disque n'ont généralement pas d'impact majeur sur les performances. Si votre pipeline brasse une grande quantité de données, les performances du disque auront une incidence. Si vous utilisez Managed Service for Apache Spark, nous vous recommandons d'utiliser des disques d'au moins 1 To, car leurs performances augmentent avec leur taille. Pour en savoir plus sur les performances des disques, consultez Configurer des disques pour répondre aux exigences de performances.
Nombre de nœuds de calcul
Pour minimiser le temps d'exécution, assurez-vous que votre cluster est suffisamment grand pour exécuter autant de tâches que possible en parallèle. Par exemple, si la source de votre pipeline lit les données à l'aide de 100 fractions, vous devez vous assurer que le cluster est suffisamment grand pour exécuter 100 exécuteurs à la fois.
Le moyen le plus simple de savoir si votre cluster est sous-dimensionné consiste à examiner la mémoire YARN en attente au fil du temps. Si vous utilisez Managed Service pour Apache Spark, vous trouverez un graphique sur la page d'informations du cluster.
Si la mémoire en attente est élevée pendant de longues périodes, vous pouvez augmenter le nombre de nœuds de calcul pour ajouter cette capacité supplémentaire à votre cluster. Dans l'exemple précédent, le cluster doit être augmenté d'environ 28 Go pour garantir l'atteinte du niveau de parallélisme maximal.
Mode de flexibilité améliorée (EFM)
EFM vous permet de spécifier que seuls les nœuds de calcul principaux sont impliqués dans le brassage des données. Étant donné que les nœuds de calcul secondaires ne sont plus responsables des données de brassage intermédiaires, lorsque vous les supprimez d'un cluster, les tâches Spark ne subissent pas de retard ni d'erreur. Comme les nœuds de calcul primaires ne sont jamais réduits, le cluster est mis à l'échelle de manière plus stable et efficace. Si vous exécutez des pipelines avec des shuffles sur un cluster statique, nous vous recommandons d'utiliser EFM.
Pour en savoir plus sur le mode EFM, consultez Mode Flexibilité améliorée de Managed Service for Apache Spark.