Dimensionnement des clusters

Par défaut, Cloud Data Fusion utilise l'autoscaling comme profil de calcul. L'estimation du meilleur nombre de nœuds de calcul de cluster pour une charge de travail est difficile, et une seule taille de cluster pour un pipeline entier n'est souvent pas idéale. L'autoscaling Dataproc fournit un mécanisme assurant l'automatisation de la gestion des ressources de cluster et active l'autoscaling des VM de nœud de calcul de cluster. Pour en savoir plus, consultez la page Autoscaling.

Sur la page Configuration de calcul, qui affiche la liste des profils, vous trouverez une colonne Nombre total de cœurs. Elle indique le nombre maximal de processeurs virtuels pour lequel le profil peut évoluer, par exemple Up to 84.

Si vous souhaitez utiliser le profil de calcul Dataproc , vous pouvez gérer les tailles de cluster en fonction de celle 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 deux processeurs et 8 Go de mémoire pour les nœuds maîtres. Si vous utilisez des clusters persistants, vous aurez peut-être besoin de nœuds maîtres plus volumineux pour suivre le workflow. Pour savoir si vous avez besoin de nœuds maîtres plus volumineux, vous pouvez surveiller l'utilisation de la mémoire et du processeur sur le nœud. 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 de plus grandes quantités de mémoire, vous devez utiliser des nœuds de calcul plus importants.

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 de plus grandes quantités de mémoire, utilisez des nœuds de calcul plus importants. Par exemple, avec un nœud de calcul comportant quatre processeurs et 15 Go, chaque nœud de calcul dispose de quatre processeurs et de 12 Go pour exécuter les conteneurs YARN. Si votre pipeline est configuré pour exécuter 1 processeur et 8 Go d'exécuteurs, YARN ne pourra pas exécuter plusieurs conteneurs par nœud de calcul. Chaque nœud de calcul disposerait de trois processeurs et de 4 Go supplémentaires, gaspillés car il ne peut rien être utilisé pour exécuter quoi que ce soit. Pour optimiser l'utilisation des ressources sur votre cluster, la mémoire et le nombre de processeurs YARN doivent correspondre à un multiple exact de la quantité nécessaire par exécuteur Spark. Vous pouvez vérifier la quantité de mémoire que chaque nœud de calcul a réservée pour YARN en vérifiant la propriété yarn.nodemanager.resource.memory-mb dans YARN.

Si vous utilisez Dataproc, la mémoire disponible pour les conteneurs YARN correspond à 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. Certaines tailles de nœuds de calcul courantes et les paramètres YARN correspondants sont présentés dans le tableau suivant.

Processeur de 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 celle de l'exécuteur définie pour le pipeline, et que YARN arrondit la quantité demandée. Par exemple, supposons que vous ayez défini la mémoire de l'exécuteur sur 2 048 Mo et que vous n'avez pas attribué de valeur à 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, que YARN arrondit à un multiple exact de l'allocation minimale YARN. Lors de l'exécution sur un nœud de calcul de 8 Go, comme l'allocation minimale YARN est de 512 Mo, elle est arrondie à 2,5 Go. Cela signifie que chaque nœud de calcul peut exécuter deux conteneurs 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 être de taille un peu plus petite 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 YARN est de 1 024 Mo. Cela signifie que chaque nœud de calcul peut exécuter quatre conteneurs, dans lesquels l'ensemble des processeurs et la mémoire YARN sont utilisés.

Pour vous donner plus de contexte, le tableau suivant présente les tailles de nœuds de calcul recommandées en fonction de certaines tailles d'exécuteur courantes.

Processeur d'exécuteur Mémoire de l'exécuteur (Mo) Processeur de nœud de calcul Mémoire du nœud de calcul ( Go)
1 2 048 4 15
1 3 072 4 21
1 4 096 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 utilisables pour l'exécution de conteneurs YARN. Lorsque la mémoire de l'exécuteur est définie sur 4 Go, 1 Go est ajouté en tant que frais généraux, ce qui signifie que 5 Go de conteneurs YARN sont associés à chaque exécuteur. 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 disposant de 8 processeurs et de 52 Go de mémoire fonctionnera également. Les VM Compute Engine limitent la quantité de mémoire qu'elles peuvent 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 de 26 Go de mémoire au maximum. 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 deux processeurs et 8 Go de mémoire, tous les processeurs sont utilisés.

Disque

Le disque est important pour certains pipelines, mais pas pour tous. Si votre pipeline ne contient aucun brassage, le disque n'est utilisé que lorsque Spark est à court de mémoire et doit verser 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 un grand nombre de données, les performances du disque auront un impact. Si vous utilisez Dataproc, il est recommandé d'utiliser des tailles de disque d'au moins 1 To, car les performances du disque augmentent avec la taille du disque. Pour en savoir plus sur les performances des disques, consultez la section Configurer les disques pour répondre aux exigences de performances.

Nombre de nœuds de calcul

Afin de réduire la durée d'exécution, vous devez vous assurer que votre cluster est suffisamment volumineux pour pouvoir s'exécuter en parallèle. Par exemple, si la source de votre pipeline lit des données à l'aide de 100 divisions, 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 en attente YARN au fil du temps. Si vous utilisez Dataproc, vous trouverez un graphique sur la page des détails du cluster.

Si la quantité de mémoire en attente reste é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, vous devez augmenter la taille du cluster d'environ 28 Go pour vous assurer que le niveau maximal de parallélisme est atteint.

Mode de flexibilité améliorée (EFM)

EFM vous permet de spécifier que seuls les nœuds de calcul primaires doivent être impliqués lors du brassage des données. Les nœuds de calcul secondaires ne sont plus responsables du brassage intermédiaire des données. Par conséquent, lorsqu'ils sont supprimés d'un cluster, les tâches Spark ne subissent plus de retards ni d'erreurs. Comme les nœuds de calcul primaires ne font jamais l'objet d'un scaling à la baisse, le cluster effectue un scaling à la baisse avec plus de stabilité et d'efficacité. Si vous exécutez des pipelines avec brassages sur un cluster statique, il est recommandé d'utiliser EFM.

Pour en savoir plus sur EFM, consultez la page Mode de flexibilité améliorée de Dataproc.