Optimiser la flexibilité et l'efficacité des clusters et des jobs

Cette page fournit des bonnes pratiques et des stratégies de planification pour vous aider à concevoir des clusters Managed Service pour Apache Spark résilients qui maximisent la disponibilité des ressources dans les Google Cloud régions, réduisent les délais de provisionnement et tirent parti des optimisations des performances et des coûts.

Présentation de la disponibilité des ressources

L'exécution de jobs sur des clusters Managed Service pour Apache Spark rigides crée des points de défaillance uniques qui peuvent entraîner des interruptions de job, ainsi que des échecs de cluster et de job en raison d'une indisponibilité localisée ou de délais de provisionnement.

Le risque d'indisponibilité des ressources est élevé pour les clusters configurés avec l'un des anti-modèles rigides suivants :

  • Placement de zone fixe : codage en dur d'une seule zone à l'aide de l'indicateur ou du champ zone au lieu d'autoriser Managed Service pour Apache Spark AutoZone à placer dynamiquement le cluster dans la zone optimale. Cet anti-modèle empêche la création de clusters à partir de ressources de calcul disponibles dans les zones adjacentes.
  • Un seul type ou une seule génération de machine par rôle de nœud : restriction des rôles de nœud à une seule génération ou un seul type de machine. Cet anti-modèle empêche le cluster de revenir à des alternatives.
  • Scaling vertical avec moins de VM volumineuses : scaling vertical des clusters pour s'appuyer sur un petit nombre de formes de VM volumineuses. Cet anti-modèle limite la flexibilité de la planification.
  • Création de cluster tout ou rien : obligation de provisionner tous les nœuds de calcul simultanément plutôt que d'utiliser la création partielle de clusters associée à l'autoscaling. Cet anti-modèle entraîne l'échec de la création du cluster si un nœud de calcul ne peut pas être alloué en raison d'une indisponibilité temporaire des ressources.
  • Pics de planification : déclenchement de pipelines par lot volumineux pendant les heures de pointe, ce qui augmente la contention régionale.

La disponibilité des ressources consiste à concevoir des jobs pour qu'ils soient flexibles en termes de matériel, multizonaux et évolutifs. En dissociant les clusters des configurations rigides et en activant les basculements de familles de machines multiples, vous pouvez augmenter les taux de réussite de la création, réduire la latence au démarrage et respecter systématiquement les contrats de niveau de service.

Recommandations sur la disponibilité des ressources

Adoptez les optimisations suivantes pour améliorer la disponibilité des ressources et la stabilité des jobs :

Utiliser des VM flexibles

La fonctionnalité VM flexibles vous permet de spécifier une liste classée de types de VM pour les nœuds de calcul maîtres, principaux et secondaires. Cela augmente les taux de réussite de la création en évaluant les types de VM listés et en sélectionnant automatiquement les zones avec une capacité disponible.

Recommandation : Utilisez des VM flexibles avec des remplacements de disque, ce qui vous permet de spécifier différents types de disques, tels que des hyperdisques et des disques persistants, pour différentes familles de machines candidates dans la même stratégie de cluster. Vous pouvez également combiner des familles de machines Gen2 et Gen4 dans une seule stratégie pour mettre à l'échelle les jobs sur un pool plus large et contourner les limites de capacité.

Pour les jobs utilisant des machines N2 et N2D, tenez compte des classements suivants :

  • Classement 0 : N2, N2D
  • Classement 1 : N4, N4D (avec hyperdisk équilibré)
  • Classement 2 : C4, C4D, C3, C3D (avec hyperdisk équilibré). Les disques SSD locaux peuvent être utilisés avec C4 et C4D, mais généralement, 8 ou 16 cœurs ne sont compatibles qu'avec 1 à 2 disques SSD locaux.
  • Classement 3 : E2 (performances inférieures ; à utiliser uniquement si nécessaire)

Par exemple, pour les jobs utilisant n2d-standard-16, les classements sont les suivants :

  • Classement 0 : n2d-standard-16, n2-standard-16
  • Classement 1 : n4-standard-16, n4d-standard-16
  • Classement 2 : c4-standard-16, c4d-standard-16, c3-standard-22, c3d-standard-16
  • Classement 3 : e2-standard-16

Lorsque vous utilisez des VM flexibles, tenez compte des facteurs suivants :

  • Compatibilité avec les types de disques mixtes : les types de machines Gen3 et Gen4 ne sont compatibles qu'avec les types de disques Hyperdisk et ne sont pas compatibles avec les types de disques persistants. Lorsque vous combinez Gen2 et Gen4, spécifiez un diskConfig pour chaque sélection d'instance dans le instanceFlexibilityPolicy. Pour en savoir plus, consultez la section Remplacements de disque.

  • Quotas de ressources : lorsque vous définissez une stratégie de VM flexibles avec des types de basculement, Compute Engine vérifie les quotas pour tous les types et disques candidats de la région. Assurez-vous que votre projet dispose de quotas de calcul et de disque suffisants alloués à tous les éléments configurés.

  • Remises Compute Engine : profitez des remises sur engagement d'utilisation (CUD) flexibles pour appliquer des économies basées sur les dépenses à plusieurs familles de VM et régions.

  • Tarification : utilisez le Google Cloud simulateur de coûts pour comparer les coûts de chaque classement de votre stratégie.

Pour obtenir des modèles de configuration et des exemples de déploiement, consultez les ressources suivantes :

Utiliser la sélection de zone automatique

Utilisez la sélection de zone automatique pour permettre à Managed Service pour Apache Spark de sélectionner la meilleure zone pour provisionner les ressources. Si vous utilisez des réseaux cloud privé virtuel (VPC) personnalisés, assurez-vous que le sous-réseau dispose d'adresses IP suffisantes dans toutes les zones régionales.

Utiliser des formes de machines plus petites

Concevez des jobs pour qu'ils soient mis à l'échelle horizontalement sur des types de machines plus petits (4, 8 ou 16 cœurs) au lieu d'être mis à l'échelle verticalement avec des VM plus volumineuses. Les VM de plus petite taille ont une plus grande disponibilité dans les zones, ce qui permet d'éviter les retards de création.

  • Examinez et modifiez l'architecture des jobs qui utilisent des types de machines volumineux pour les nœuds de pilote.
  • Examinez les jobs qui n'exécutent que des nœuds de pilote sans nœuds de calcul (clusters à nœud unique). Les jobs exécutés sur des clusters à nœud unique ne peuvent pas être mis à l'échelle de manière dynamique et lient l'exécution à un seul hôte physique.

Utiliser l'autoscaling de cluster

Utilisez cluster autoscaling avec un nombre maximal d'instances suffisant pour gérer la capacité des jobs avec une variabilité des ressources (pics).

Utiliser la création partielle de clusters avec autoscaling

Utilisez la création partielle de clusters, qui vous permet de spécifier un nombre minimal de nœuds de calcul principaux, avec autoscaling. Si le cluster démarre avec moins de nœuds de calcul que demandé, l'autoscaling peut en ajouter d'autres de manière dynamique une fois les ressources disponibles.

Planifier les jobs pendant les heures creuses

Planifiez les jobs pendant les heures creuses, par exemple à midi et le week-end. Planifiez-les à des heures non standard, par exemple à 10:07 au lieu de 10:00, pour éviter les pics de planification.

Étape suivante