Workers secondaires Managed Service pour Apache Spark

En plus d'utiliser des VM Compute Engine standards en tant que nœuds de calcul Managed Service pour Apache Spark (appelées nœuds de calcul "principaux"), les clusters Managed Service pour Apache Spark peuvent utiliser des nœuds de calcul secondary

Les caractéristiques suivantes s'appliquent à tous les nœuds de calcul secondaires d'un cluster Managed Service pour Apache Spark :

  • Traitement uniquement : les nœuds de calcul secondaires ne stockent pas de données. Ils fonctionnent uniquement comme nœuds de traitement. Par conséquent, vous pouvez utiliser les nœuds de calcul secondaires pour adapter le calcul sans effectuer le scaling de l'espace de stockage.

  • Aucun cluster de nœud de calcul secondaire uniquement : votre cluster doit comporter des nœuds de calcul principaux. Si vous créez un cluster et que vous ne spécifiez pas le nombre de nœuds de calcul principaux, Managed Service pour Apache Spark ajoute deux nœuds de calcul principaux au cluster.

  • Type de machine : par défaut, les nœuds de calcul secondaires utilisent le type de machine des nœuds de calcul principaux du cluster. Par exemple, si vous créez un cluster avec des nœuds de calcul principaux utilisant des types de machines n1-standard-4, tous les nœuds de calcul secondaires ajoutés au cluster utiliseront également des machines n1-standard-4 par défaut.

    Au lieu d'utiliser le type de machine de nœud de calcul principal par défaut pour les nœuds de calcul secondaires, vous pouvez spécifier une ou plusieurs listes classées de types de machines pour les nœuds de calcul secondaires. Pour en savoir plus, consultez VM flexibles Managed Service pour Apache Spark.

  • Taille de disque persistant : par défaut, les nœuds de calcul secondaires sont créés avec une taille de disque de démarrage égale à celle du nœud de calcul primaire ou à 1 000 Go, selon la valeur qui est la plus faible. Cet espace disque est utilisé pour la mise en cache locale des données et n'est pas disponible via HDFS. Vous pouvez remplacer la taille de disque par défaut à l'aide de la gcloud dataproc clusters create --secondary-worker-boot-disk-size commande lors de la création du cluster. Vous pouvez spécifier cette option même si le cluster ne dispose pas de nœuds de calcul secondaires lors de sa création.

  • Création asynchrone : lorsque vous ajoutez des nœuds de calcul secondaires en créant ou en faisant évoluer un cluster, les nœuds de calcul secondaires peuvent ne pas être provisionnés une fois l'opération de création ou de mise à jour terminée. En effet, Managed Service pour Apache Spark gère les nœuds de calcul secondaires à l'aide des groupes d'instances gérés (MIG, Managed Instance Groups), qui créent des VM de manière asynchrone dès qu'ils peuvent être provisionnés (consultez la section Vérifier l'état des instances gérées).

Nœuds de calcul secondaires préemptifs et non préemptifs

Il existe trois types de nœuds de calcul secondaires : les VM Spot, les VM préemptives standards, et les VM non préemptives. Le type de nœud de calcul secondaire Managed Service pour Apache Spark par défaut est la VM préemptive standard. Vous pouvez spécifier une combinaison de nœuds de calcul secondaires Spot et non préemptifs.

Exemple : Si vous sélectionnez trois nœuds de calcul secondaires lorsque vous créez un cluster, vous pouvez spécifier trois VM Spot, trois VM préemptives, trois VM non préemptives ou un mélange de nœuds de calcul Spot et non préemptifs.

Nœuds de calcul préemptifs

  • Bien que la suppression potentielle de nœuds de calcul préemptifs puisse affecter la stabilité des tâches, vous pouvez décider d'utiliser des instances préemptives afin de réduire les coûts de calcul par heure pour le traitement des données non critiques ou afin de créer de très grands clusters à un moindre coût total (vous pouvez utiliser le Simulateur de coût Google Cloud pour estimer les coûts).

  • Pour des résultats optimaux, le nombre de nœuds de calcul préemptifs dans votre cluster doit être inférieur à 50 % du nombre total de nœuds de calcul (principal et tous les nœuds de calcul secondaires) de votre cluster.

  • En cas d'utilisation de nœuds de calcul préemptifs, vos tâches rencontreront probablement un plus grand nombre de défaillances temporaires de tâches à un seul nœud de calcul que les tâches exécutées sur des nœuds de calcul non préemptifs. Pour améliorer la tolérance des tâches aux défaillances de bas niveau, vous pouvez définir des valeurs de propriété de cluster semblables aux valeurs de propriété par défaut utilisées avec les clusters d'autoscaling pour augmenter le nombre maximal de tentatives d'exécution de tâches et éviter les défaillances de tâches.

  • Économies potentielles : L'utilisation de VM préemptives ne permet pas toujours de réaliser des économies, car les préemptions peuvent entraîner une exécution plus longue des tâches, ce qui augmente les coûts des tâches. Bien que l'utilisation du mode de flexibilité améliorée (EFM) avec des VM préemptives puisse atténuer ce résultat, les économies globales réalisées grâce aux VM préemptives varient en fonction de chaque cas d'utilisation. En général, les tâches de courte durée sont plus adaptées à l'utilisation de VM préemptive, car la probabilité de préemption pendant l'exécution de la tâche est plus faible. Essayez différentes options de tâche, telles que les VM non préemptives et les VM préemptives avec EFM, pour estimer les coûts et trouver la meilleure solution.

Nœuds de calcul non préemptifs

Sélectionner des nœuds de calcul secondaires

Vous pouvez spécifier le nombre et le type de nœuds de calcul secondaires lorsque vous créez un cluster à l'aide de la Google Cloud console, gcloud CLI ou de l'API Managed Service pour Apache Spark.

  • Vous pouvez combiner des nœuds de calcul secondaires Spot avec des nœuds de calcul secondaires non préemptifs.
  • Vous pouvez mettre à jour votre cluster après sa création pour modifier le nombre, mais pas le type, de nœuds de calcul secondaires de votre cluster.
  • Les mises à jour de libellés se propagent à tous les nœuds de calcul secondaires préemptifs dans les 24 heures. Les mises à jour de libellés ne se propagent pas aux nœuds de calcul secondaires existants non préemptifs. Les mises à jour de libellés sont appliquées à tous les nœuds de calcul ajoutés à un cluster après une mise à jour de libellé. Par exemple, si vous effectuez un scaling à la hausse du cluster, tous les nouveaux nœuds de calcul principal et secondaire se verront affecter de nouveaux libellés.

Console

Vous pouvez spécifier le nombre de nœuds de calcul secondaires lors de la création d'un cluster Managed Service pour Apache Spark à partir de la Google Cloud console. Une fois le cluster créé, vous pouvez ajouter et supprimer des nœuds de calcul secondaires en modifiant la configuration du cluster dans la Google Cloud console.

Créer un cluster avec des nœuds de calcul secondaires

Vous pouvez définir le nombre et le type de nœuds de calcul secondaires à appliquer à un nouveau cluster dans la section Nœuds de calcul secondaires du panneau Configurer les nœuds de la page Créer un cluster de Managed Service pour Apache Spark dans la Google Cloud console. Spécifiez le nombre et le type de nœuds de calcul secondaires dans les champs Nœuds de calcul secondaires et Préemption, respectivement.

Mettre à jour un cluster avec des instances secondaires

Pour mettre à jour le nombre de nœuds de calcul secondaires dans un cluster, cliquez sur le nom du cluster sur la page Clusters de la Google Cloud console. Sur la page Détails du cluster. Cliquez sur l'onglet **Configuration** , puis sur Modifier et mettez à jour le numéro dans le champ "Nœuds de calcul secondaires".

Supprimer toutes les instances secondaires d'un cluster

Pour supprimer tous les nœuds de calcul secondaires d'un cluster, mettez à jour la configuration du cluster comme expliqué précédemment, en spécifiant 0 dans le champ "Nœuds de calcul secondaires".

Commande Google Cloud CLI

Utilisez la gcloud dataproc clusters create commande pour ajouter des nœuds de calcul secondaires à un cluster lors de la création du cluster. Une fois le cluster créé, vous pouvez ajouter ou supprimer des nœuds de calcul secondaires vers ou depuis le cluster à l'aide de la gcloud dataproc clusters update commande (le nombre de nœuds de calcul secondaires peut être mis à jour, mais pas le type).

Créer un cluster avec des nœuds de calcul secondaires

Pour créer un cluster avec des nœuds de calcul secondaires, exécutez la gcloud dataproc clusters create commande avec l'--num-secondary-workers argument. Les nœuds de calcul secondaires sont des VM préemptives standards par défaut. Vous pouvez spécifier des nœuds de calcul secondaires non préemptifs ou Spot lorsque vous créez un cluster en définissant l'option --secondary-worker-type sur `non-preemptible` ou `spot`. Les exemples suivants montrent comment créer un cluster avec chaque type de nœud de calcul secondaire : `preemptible` (par défaut), Spot (préemptif) et non préemptif. Vous pouvez utiliser des options supplémentaires pour combiner des nœuds de calcul secondaires Spot avec des nœuds de calcul secondaires non préemptifs.

Exemple 1

La commande suivante crée "cluster1" avec deux nœuds de calcul secondaires préemptifs standards (type par défaut).

gcloud dataproc clusters create cluster1 \
    --num-secondary-workers=2 \
    --region=us-central1
Exemple 2

La commande suivante utilise l'option secondary-worker-type pour créer "cluster2" avec deux nœuds de calcul secondaires Spot (préemptifs).

gcloud dataproc clusters create cluster2 \
    --num-secondary-workers=2 \
    --secondary-worker-type=spot \
    --region=us-central1

Exemple 3

La commande suivante utilise l'option secondary-worker-type pour créer "cluster3" avec deux nœuds de calcul secondaires non préemptifs.

gcloud dataproc clusters create cluster3 \
    --num-secondary-workers=2 \
    --secondary-worker-type=non-preemptible \
    --region=us-central1
Modifier la taille du disque de démarrage du nœud de calcul secondaire. Par défaut, tous les nœuds de calcul secondaires sont créés avec une taille de disque de démarrage égale à celle du nœud de calcul primaire ou à 1 000 Go, selon la valeur qui est la plus faible. Cet espace disque est utilisé pour la mise en cache locale des données et n'est pas disponible via HDFS. Vous pouvez remplacer la taille de disque par défaut à l'aide de la gcloud dataproc clusters create --secondary-worker-boot-disk-size commande lors de la création du cluster. Cette option peut être spécifiée même si le cluster ne comporte aucun nœud de calcul secondaire lors de la création. Laissez la Google Cloud console créer la requête de création de cluster. Pour que la console génère une requête API REST ou une commande de l'outil gcloud équivalentes, vous pouvez cliquer sur les liens Requête/Réponse REST ou ligne de commande équivalente en bas du panneau de gauche sur la page Créer un cluster de Managed Service for Apache Spark. Google Cloud

Mettre à jour un cluster avec des nœuds de calcul secondaires

Pour mettre à jour un cluster afin d'ajouter ou de supprimer des nœuds de calcul secondaires, exécutez la gcloud dataproc clusters update commande avec l'--num-secondary-workers option.

Exemple

La commande suivante met à jour example-cluster pour utiliser quatre nœuds de calcul secondaires (du type par défaut ou du type spécifié lors de la création du cluster).

gcloud dataproc clusters update example-cluster \
    --num-secondary-workers=4 \
    --region=us-central1

Supprimer tous les nœuds de calcul secondaires d'un cluster

Pour supprimer tous les nœuds de calcul secondaires d'un cluster, exécutez la gcloud dataproc clusters update commande avec --num-secondary-workers défini sur 0.

Exemple

La commande suivante supprime tous les nœuds de calcul secondaires de "example-cluster".

gcloud dataproc clusters update example-cluster \
    --num-secondary-workers=0 \
    --region=us-central1

API REST

Créer un cluster avec des nœuds de calcul secondaires

Utilisez l'API clusters.create Managed Service pour Apache Spark pour ajouter des nœuds de calcul secondaires à un cluster lors de la création du cluster. Les exemples suivants montrent comment créer un cluster avec chaque type de nœud de calcul secondaire: preemptible (par défaut), spot (préemptif) et non-preemptible. Vous pouvez utiliser des champs supplémentaires pour combiner des nœuds de calcul secondaires Spot avec des nœuds de calcul secondaires non préemptifs.

Exemple 1

La requête POST suivante crée un "cluster1" avec deux nœuds de calcul VM préemptifs standards (type par défaut).


POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters

{
  "clusterName": "cluster1",
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 2
    }
  }
}
Exemple 2

La requête POST suivante crée un "cluster2" avec deux nœuds de calcul VM Spot (préemptifs).


POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters

{
  "clusterName": "cluster2",
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 2,
      "preemptibility": "SPOT"
    }
  }
}

Exemple 3

La requête POST suivante crée "cluster3" avec deux nœuds de calcul secondaires non préemptifs.


POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters

{
  "clusterName": "cluster3",
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 2,
      "preemptibility": "NON_PREEMPTIBLE"
    }
  }
}

Mettre à jour un cluster avec des nœuds de calcul secondaires

Utilisez l'API Managed Service pour Apache Spark clusters.patch pour ajouter et supprimer des nœuds de calcul secondaires.

Exemple

La requête PATCH suivante met à jour un cluster avec quatre nœuds de calcul secondaires (du type par défaut ou du type spécifié lors de la création du cluster).


PATCH /v1/projects/project-id/regions/region/clusters/cluster-name?updateMask=config.secondary_worker_config.num_instances
{
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 4
    }
  }
}
Laissez la Google Cloud console créer la requête de création de cluster. Pour que la console génère une requête API REST ou une commande gcloud CLI équivalentes, vous pouvez cliquer sur les liens Requête/Réponse REST ou ligne de commande équivalente en bas du panneau de gauche sur la page Créer un cluster de Managed Service for Apache Spark. Google Cloud

Résoudre les problèmes liés aux nœuds de calcul secondaires

  • Problèmes d'autorisation au niveau du compte de service : les nœuds de calcul secondaires sont créés via un groupe d'instances géré. En cas de problème d'autorisation, les journaux Managed Service pour Apache Spark ne signalent pas l'échec de la création des nœuds de calcul secondaires, mais les nœuds de calcul défaillants sont répertoriés dans l'onglet Instances de VM sur la page Détails du cluster de la Google Cloud console sans coche verte. Pour afficher la liste, ouvrez la page Clusters de Managed Service pour Apache Spark, puis cliquez sur le nom du cluster pour ouvrir la page Détails du cluster.

  • Problèmes d'autorisation au niveau du groupe d'instances géré : pour vérifier s'il existe un problème avec les autorisations au niveau du groupe d'instances géré :

    1. Recherchez le nom du groupe d'instances géré (instanceGroupManagerName).

      Console

      1. Ouvrez la page Clusters de Managed Service pour Apache Spark, puis cliquez sur le nom du cluster pour ouvrir la page Détails du cluster pour le cluster.
      2. Cliquez sur Requête/Réponse REST équivalente en bas de la page, puis affichez la valeur config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName.

      Google Cloud CLI

      Exécutez la gcloud dataproc clusters describe commande avec l'option --format pour afficher le instanceGroupManagerName.
      gcloud dataproc clusters describe CLUSTER_NAME \
          --region=REGION \
          --format='value(config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName)'
      

      API REST

      Envoyez une clusters.get requête pour renvoyer la valeur de config.secondaryWorkerConfig.managedGroupConfig.instanceGroupManagerName.
    2. Affichez les journaux dans l'explorateur de journaux.
    • Sélectionnez le type de ressource Google Compute Engine Instance Group et filtrez le nom du groupe d'instances géré.

    • Vous pouvez également appliquer un filtre de journalisation pour `resource.type="gce_instance_group" and resource.labels.instance_group_name=INSTANCE_GROUP_MANAGER_NAME.

Combiner des nœuds de calcul secondaires Spot avec des nœuds de calcul secondaires non préemptifs

Vous pouvez spécifier une combinaison de nœuds de calcul secondaires Spot et non préemptifs lorsque vous créez un cluster Managed Service pour Apache Spark.

Paramètres de nœud de calcul secondaire pour combiner des nœuds de calcul secondaires Spot avec des nœuds de calcul secondaires non préemptifs

Utilisez les paramètres de nœud de calcul secondaire suivants lorsque vous créez un cluster Managed Service pour Apache Spark afin d'obtenir un niveau minimal de capacité de nœud de calcul secondaire avec la possibilité d'augmenter la capacité lorsque des VM Spot sont disponibles :

  • Nombre de nœuds de calcul secondaires : nombre total de nœuds de calcul secondaires à provisionner.

  • Type de nœud de calcul secondaire : spot est le type de nœud de calcul secondaire lorsque vous combinez des nœuds de calcul secondaires Spot avec des nœuds de calcul secondaires non préemptifs.

  • standardCapacityBase : nombre de nœuds de calcul secondaires non préemptifs (standards) à provisionner. Les nœuds de calcul secondaires non préemptifs sont provisionnés avant les autres types de nœuds de calcul secondaires.

  • standardCapacityPercentAboveBase : une fois le nombre de nœuds de calcul secondaires standardCapacityBase atteint, le nombre de nœuds de calcul secondaires restants nécessaires pour atteindre le nombre total de nœuds de calcul secondaires demandés est rempli avec une combinaison de VM non préemptives et Spot, comme suit :

    • standardCapacityPercentAboveBase: pourcentage des nœuds de calcul secondaires restants à remplir avec des VM non préemptives.
    • Le nombre restant nécessaire pour atteindre le nombre total de nœuds de calcul secondaires demandés est rempli avec des VM Spot.

Exemple :

  • Nombre de nœuds de calcul secondaires : 15
  • standardCapacityBase: 5
  • standardCapacityPercentAboveBase : 30 %

Résultat :

  • Non préemptif : 8 = 5 (standardCapacityBase) + 3 (30 % des 10 restants)
  • Spot : 7 (70 % des 10 restants)
  • Total = 15

Créer un cluster avec une combinaison de nœuds de calcul secondaires Spot et non préemptifs

Vous pouvez utiliser gcloud CLI ou l'API Managed Service pour Apache Spark afin de combiner des nœuds de calcul secondaires Spot avec des nœuds de calcul secondaires non préemptifs lorsque vous créez un cluster.

gcloud

Exécutez la commande suivante en local ou dans Cloud Shell pour créer un cluster avec une combinaison de nœuds de calcul secondaires Spot et non préemptifs.

gcloud dataproc clusters create CLUSTER_NAME \
    --project=PROJECT_ID \
    --region=REGION \
    --secondary-worker-type=spot \
    --num-secondary-workers=NUMBER_SECONDARY_WORKERS \
    --secondary-worker-standard-capacity-base=STANDARD_CAPACITY_BASE \
    --secondary-worker-standard-capacity-percent-above-base=STANDARD_CAPACITY_PERCENT_ABOVE_BASE \
    OTHER_FLAGS_AS_NEEDED

Remarques :

API

Pour combiner des nœuds de calcul secondaires Spot avec des nœuds de calcul secondaires non préemptifs, définissez les champs d'API Managed Service pour Apache Spark preemptibility, standardCapacityBase, et standardCapacityPercentAboveBase dans le cadre d' une requête cluster.create, comme illustré dans l'exemple JSON suivant :

{
  "clusterName": "CLUSTER_NAME",
  "config": {
    "secondaryWorkerConfig": {
      "numInstances": 15,
      "preemptibility": "spot",
      "instanceFlexibilityPolicy": {
        "provisioningModelMix": {
          "standardCapacityBase": STANDARD_CAPACITY_BASE
          "standardCapacityPercentAboveBase": STANDARD_CAPACITY_PERCENT_ABOVE_BASE
        }
      }
    }
  }
}

Remarques :

Combiner le mixage de nœuds de calcul secondaires avec des VM flexibles

Vous pouvez combiner des nœuds de calcul secondaires Spot avec des nœuds de calcul secondaires non préemptifs et spécifier des formes de VM flexibles pour les nœuds de calcul secondaires lorsque vous créez un cluster.

Exemple gcloud CLI :

gcloud dataproc clusters create cluster-name \
    --project=project-id \
    --region=us-central1 \
    --secondary-worker-type=spot \
    --num-secondary-workers=15 \
    --secondary-worker-standard-capacity-base=5 \
    --secondary-worker-standard-capacity-percent-above-base=30 \
    --secondary-worker-machine-types="type=n2-standard-8,rank=0" \
    --secondary-worker-machine-types="type=e2-standard-8,type=t2d-standard-8,rank=1"
    ...other flags as needed

Caractéristiques du mixage de nœuds de calcul secondaires

Cette section décrit certains comportements et caractéristiques associés à la combinaison de nœuds de calcul secondaires Spot avec des nœuds de calcul secondaires non préemptifs.

Préférence de nœud de calcul secondaire

Managed Service pour Apache Spark ne donne pas la préférence aux VM Spot ou non préemptives lors de la planification d'applications sur des nœuds de calcul secondaires.

Scaling de nœud de calcul secondaire

Lorsque les nœuds de calcul secondaires sont mis à l'échelle via l'autoscaling ou le scaling manuel, Managed Service pour Apache Spark conserve le ratio Spot/non préemptif demandé lorsqu'il ajoute des nœuds de calcul secondaires.

Mettre à jour les paramètres de mixage de nœuds de calcul secondaires

Vous spécifiez la combinaison de nœuds de calcul secondaires Spot et non préemptifs lorsque vous créez un cluster Managed Service pour Apache Spark. Vous ne pouvez pas modifier les paramètres de mixage de nœuds de calcul secondaires après avoir créé le cluster.

Préemption de nœud de calcul secondaire Spot

  • Managed Service pour Apache Spark ne contrôle pas le moment de la préemption des VM Spot (consultez Préemption des VM Spot).
  • En cas de préemption Spot, le groupe de nœuds de calcul secondaires peut fonctionner avec une capacité réduite temporairement jusqu'à ce que Compute Engine reprovisionne les VM préemptées.
  • Managed Service pour Apache Spark n'ajoute pas de capacité à un groupe de nœuds de calcul secondaires au-delà des paramètres initiaux du groupe.