Nœuds de calcul secondaires Dataproc

En plus d'utiliser des VM Compute Engine standards en tant que nœuds de calcul Dataproc (appelés nœuds de calcul "principaux"), les clusters Dataproc peuvent utiliser des nœuds de calcul secondary.

Les caractéristiques suivantes s'appliquent à tous les nœuds de calcul secondaires d'un cluster Dataproc :

  • 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, Dataproc 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 primaires 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 utiliseront également des machines n1-standard-4.

    Au lieu d'utiliser le type de machine de nœud de calcul primaire 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 la section VM flexibles Dataproc.

  • 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 à 100 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 commande gcloud dataproc clusters create --secondary-worker-boot-disk-size lors de la création du cluster. Vous pouvez spécifier cette option même si le cluster ne comporte 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, Dataproc 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 sectionVé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. Si vous spécifiez des nœuds de calcul secondaires pour votre cluster, ils doivent être du même type. Le type de nœud de calcul secondaire Dataproc par défaut est la VM préemptive standard.

Exemple: Si vous sélectionnez trois nœuds de calcul secondaires lors de la création d'un cluster, vous pouvez spécifier que les trois seront des VM Spot, qu'ils seront tous trois des VM préemptives (standards), ou qu'ils seront tous des VM non préemptives. Vous ne pouvez toutefois pas spécifier que chacun d'eux sera d'un type différent.

Une VM Spot est le dernier type de VM préemptive Compute Engine. Elle partage le modèle de tarification le plus économique des VM préemptives standards, mais contrairement aux VM préemptive standards ayant une durée de vie maximale de 24 heures, la VM Spot n'a pas de durée de vie maximale. Les nœuds de calcul de VM préemptive ponctuelles et standards sont récupérés et supprimés d'un cluster Dataproc si Google Cloud en a besoin pour d'autres tâches.

Nœuds de calcul préemptifs

  • Bien que la suppression potentielle des 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 de créer de très grands clusters pour un coût total inférieur (vous pouvez utiliser le simulateur de coût Google Cloud pour estimer les coûts).

  • Pour de meilleurs résultats, 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 (nœuds principaux et secondaires) de votre cluster.

  • Lorsque vous utilisez des nœuds de calcul préemptifs, vos tâches connaissent très probablement un plus grand nombre d'échecs temporaires de tâches à nœud de calcul unique que les tâches exécutées sur des nœuds de calcul non préemptifs. Pour accroître la tolérance des tâches aux échecs de tâches 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 afin d'augmenter le nombre maximal de nouvelles tentatives et d'éviter les échecs de tâches.

  • Considération des économies possibles:l'utilisation de VM préemptives ne permet pas toujours de faire des économies, car les préemptions peuvent allonger l'exécution des tâches et donc augmenter les coûts. Bien que l'utilisation du mode de flexibilité améliorée (EFM) avec des VM préemptives permette d'atténuer ce résultat, les économies globales liées aux VM préemptives varient en fonction des cas d'utilisation. En règle générale, les tâches à courte durée de vie sont plus adaptées à l'utilisation de VM préemptive, car la probabilité de préemption lors de l'exécution de la tâche est plus faible. Essayez différentes options de job (par exemple, pas de VM préemptives et VM préemptives avec EFM) pour estimer les coûts et trouver la meilleure solution.

Nœuds de calcul non préemptifs

  • Vous pouvez créer un cluster avec des nœuds de calcul secondaires non préemptifs pour faire évoluer les ressources de calcul sans compromettre la stabilité des tâches. Pour ce faire, spécifiez "non préemptif" comme type de nœud de calcul secondaire.

Utiliser 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 console Google Cloud, de gcloud CLI ou de l'API Dataproc.

  • Les nœuds de calcul secondaires doivent être de même type.
  • 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 des étiquettes ne se propagent pas aux nœuds de calcul secondaires non préemptifs existants. 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 Dataproc à partir de la console Google Cloud. Une fois le cluster créé, vous pouvez ajouter et supprimer des nœuds de calcul secondaires en modifiant la configuration du cluster à partir de la console Google Cloud.

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", sur la page Dataproc Créer un cluster de la console Google Cloud. 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 console Google Cloud. Sur la page Détails du cluster, cliquez sur l'onglet CONFIGURATION, puis cliquez sur MODIFIER et mettez à jour le numéro dans le champ "Nœuds de calcul secondaires".

Supprimer toutes les instances préemptives 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 gcloud

Exécutez la commande gcloud dataproc clusters create pour ajouter des nœuds de calcul secondaires à un cluster lors de la création de celui-ci. Une fois le cluster créé, vous pouvez ajouter ou supprimer des nœuds de calcul secondaires dans le cluster à l'aide de la commande gcloud dataproc clusters update (le nombre de nœuds de calcul secondaires peut être mis à jour, mais pas leur 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 commande gcloud dataproc clusters create avec l'argument --num-secondary-workers. Notez que 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 lors de la création d'un cluster en définissant --secondary-worker-type=non-preemptible (la propriété dataproc:secondary-workers.is-preemptible.override n'est plus utilisée pour spécifier le type de nœud de calcul secondaire).

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 (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

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 commande gcloud dataproc clusters update avec l'argument --num-secondary-workers.

Exemple

La commande suivante met à jour "example-cluster" pour utiliser quatre nœuds de calcul secondaires (du type ou du type par défaut 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 commande gcloud dataproc clusters update 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'APIclusters.create Dataproc pour ajouter des nœuds de calcul secondaires à un cluster lors de la création du cluster. Notez que les nœuds de calcul secondaires sont des VM préemptives standards par défaut.

Exemple 1

La requête POST suivante crée un "cluster1" avec deux nœuds de calcul de 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 de 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 clusters.patch Dataproc pour ajouter et supprimer des nœuds de calcul secondaires.

Exemple

La requête PATCH suivante met à jour un cluster pour qu'il dispose de quatre nœuds de calcul secondaires (du type ou du type par défaut 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
    }
  }
}

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é, et Compute Engine utilise le compte de service Agent de service des API Google de votre projet pour effectuer des opérations liées au groupe d'instances géré. Le nom de ce compte de service est au format suivant : project-id@cloudservices.gserviceaccount.com.

En cas de problème d'autorisation avec ce compte de service, les journaux Dataproc ne signalent pas l'échec de la création de nœuds de calcul secondaires. En revanche, les nœuds de calcul ayant échoué sont listés dans l'onglet VM INSTANCES de la page Cluster details (Détails du cluster) de la console Google Cloud sans coche verte (ouvrez la page Dataproc Clusters, puis cliquez sur le nom du cluster pour ouvrir la page Cluster details (Détails du cluster) 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é, consultez les journaux dans l'explorateur de journaux avec le type de ressource "Google Compute Engine Instance Group" (Type d'instance Google Compute Engine), puis filtrez l'instance en fonction de l'ID du groupe d'instances correspondant. Le filtre d'ID de groupe d'instances affiche le nom du groupe d'instances au format dataproc-CLUSTER NAME-sw. L'ID du groupe d'instances est renseigné automatiquement dans la requête de journalisation. Au lieu d'utiliser les filtres de menu déroulant, vous pouvez également appliquer un filtre de journalisation pour resource.type="gce_instance_group" et resource.labels.instance_group_name="dataproc-CLUSTER NAME-sw".

  • Problèmes d'autorisation au niveau de l'image personnalisée : si les VM du cluster Dataproc sont créées avec des images personnalisées extraites d'un autre projet, le rôle Compute Image User doit être attribué au compte de service project-id@cloudservices.gserviceaccount.com de votre projet (consultez la section Accorder l'accès aux images à un groupe d'instances géré). Si le rôle approprié n'est pas attribué, ce message d'erreur s'affiche dans les journaux : Required 'compute.images.useReadOnly' permission for 'projects/[IMAGE PROJECT]/global/images/[IMAGE NAME]