Les VM flexibles sont une fonctionnalité de Managed Service pour Apache Spark qui vous permet de spécifier des listes prioritaires de types de VM pour les nœuds maîtres, principaux et secondaires de Managed Service pour Apache Spark lorsque vous créez un cluster Managed Service pour Apache Spark.
Pourquoi utiliser des VM flexibles ?
Auparavant, si un type de VM n'était pas disponible lorsque vous envoyiez une requête de création de cluster, la requête échouait et vous deviez la mettre à jour, ainsi que votre script ou votre code, pour spécifier un type de VM "le plus adapté". Ce processus de nouvelle requête pouvait impliquer plusieurs itérations jusqu'à ce que vous spécifiiez un type de VM disponible.
La fonctionnalité de VM flexibles de Managed Service pour Apache Spark permet à votre requête de création de cluster de réussir en sélectionnant les types de VM maîtres, principaux et secondaires dans vos listes de VM classées, puis en recherchant les zones de la région de cluster spécifiée dans lesquelles les types de VM listés sont disponibles.
Limites
- Les clusters qui utilisent des VM flexibles ne peuvent pas être arrêtés.
- Les nœuds maîtres des clusters à haute disponibilité ne peuvent pas utiliser de VM flexibles, mais les nœuds de calcul des clusters à haute disponibilité peuvent en utiliser.
Terminologie
- Type de VM : famille, capacité de mémoire et nombre de cœurs de processeur d'une instance de VM. Managed Service pour Apache Spark est compatible avec l'utilisation de types de VM prédéfinis et personnalisés.
- Nœuds maîtres et principaux : un cluster comporte un nœud maître et au moins deux nœuds de calcul principaux.
- Nœuds de calcul secondaires : les nœuds de calcul secondaires sont facultatifs et ne stockent pas de données. Ils ne fonctionnent que comme des nœuds de traitement. Vous pouvez utiliser les nœuds de calcul secondaires pour adapter le calcul sans augmenter l'espace de stockage. Le type de nœud de calcul secondaire de VM flexible par défaut est une VM Spot, qui est un type préemptif (voir Nœuds de calcul secondaires de Managed Service pour Apache Spark workers).
Utilisation
- Les VM flexibles sont disponibles dans Managed Service pour Apache Spark sur
Compute Engine
2.0.74+,2.1.76+,2.2.42+et les versions d'image ultérieures. - La création de clusters avec des VM Flex maîtres ou principales prend plus de temps (environ 32 secondes supplémentaires).
- Le nom du cluster ne doit pas dépasser 45 caractères.
- Le même type de disque est requis pour tous les types de VM.
- Vous pouvez spécifier jusqu'à cinq listes de types de VM classées, avec un maximum de 10 types de VM par liste. Pour en savoir plus, consultez Demander des VM flexibles.
- Si votre requête de création de cluster inclut une règle d'autoscaling , les VM flexibles peuvent appartenir à différentes familles de VM, mais elles doivent avoir la même quantité de mémoire et le même nombre de cœurs.
- Lors du provisionnement de VM flexibles, Managed Service pour Apache Spark consomme les réservations disponibles "correspondantes", mais pas les réservations "spécifiques" (voir Utiliser des instances réservées). Les types de machines qui correspondent aux réservations sont d'abord sélectionnés dans un classement, suivis des types de VM avec le plus grand nombre de processeurs.
- Managed Service pour Apache Spark applique Google Cloud des quotas au provisionnement de VM flexibles.
- Bien que vous puissiez spécifier différents ratios processeur/mémoire pour les types de VM de nœuds de calcul principaux et secondaires dans un cluster, cela peut entraîner une dégradation des performances, car le ratio processeur/mémoire le plus petit est utilisé comme unité de conteneur la plus petite.
- Si vous mettez à jour un cluster créé à l'aide de VM flexibles, Managed Service pour Apache Spark sélectionne et ajoute des nœuds de calcul à partir des listes de VM flexibles que vous avez fournies lors de la création de votre cluster.
Recommandation : Activez le placement automatique des zones de Managed Service pour Apache Spark, ce qui permet à Managed Service pour Apache Spark de choisir une zone ayant la capacité de provisionner les VM demandées.
Demander des VM flexibles
Vous pouvez spécifier des VM flexibles lorsque vous créez un cluster Managed Service pour Apache Spark à l'aide de la Google Cloud console, de Google Cloud CLI ou de l'API Dataproc.
- Vous pouvez spécifier jusqu'à cinq listes de types de VM classées, avec un maximum de 10 types de VM par liste. Les listes les moins bien classées ont la priorité la plus élevée. Par défaut, les listes de VM flexibles ont un classement de 0. Dans une liste, Managed Service pour Apache Spark donne la priorité aux types de VM avec des réservations inutilisées, suivis des plus grandes tailles de VM. Les types de VM d'une liste ayant le même nombre de processeurs sont traités de manière égale.
Console
Pour créer un cluster avec des VM flexibles, procédez comme suit :
- Ouvrez la page **Créer un cluster**.
- Cliquez sur Configuration supplémentaire pour développer cette section.
- Modifiez Nœuds de calcul principaux ou Nœuds de calcul secondaires. Sous Ajouter des types de nœuds de calcul, spécifiez des VM classées supplémentaires.
gcloud
Utilisez la
gcloud dataproc clusters create
commande pour ajouter plusieurs master-machine-types, worker-machine-types et
secondary-worker-machine-types
indicateurs afin de spécifier des listes de VM flexibles classées pour les nœuds maîtres, principaux et
secondaires.
L'exemple suivant demande des types de VM maîtres, principaux et secondaires avec les priorités suivantes :
- Provisionnez des VM
e2-standard-8si elles sont disponibles (classement 0). Si les machinese2-standard-8ne sont pas disponibles, provisionnez des VMn2-standard-8(classement 1).
Étant donné que le type de nœud de calcul secondaire n'est pas spécifié, des VM secondaires Spot préemptives seront provisionnées.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --zone="" \ --master-machine-types="type=e2-standard-8,rank=0" \ --master-machine-types="type=n2-standard-8,rank=1" \ --num-workers=10 \ --worker-machine-types="type=e2-standard-8,rank=0" \ --worker-machine-types="type=n2-standard-8,rank=1" \ --num-secondary-workers=4 \ --secondary-worker-machine-types="type=e2-standard-8,rank=0" \ --secondary-worker-machine-types="type=n2-standard-8,rank=1"
Remarques :
--zone="": si vous définissez cet indicateur sur une valeur vide, vous activez le placement automatique des zones, ce qui permet à Managed Service pour Apache Spark de choisir une zone dans laquelle les types de VM demandés sont disponibles. La valeur de cet indicateur remplace toute sélection de zone spécifiée dans votregcloud config listpar défaut.
API
Utilisez instanceFlexibilityPolicy.instanceSelectionList
dans le cadre d'une requête
clusters.create
de l'API Dataproc pour spécifier une liste classée de
machineTypes
pour les nœuds maîtres, principaux et secondaires.
Exemple : L'extrait JSON suivant d'un clusters.create
corps de requête
spécifie les types de machines maîtres (masterConfig), principaux (workerConfig) et secondaires
(secondaryWorkerConfig) avec les classements 0 et 1.
{
"projectId": "PROJECT_ID",
"clusterName": "CLUSTER_NAME",
"config": {
"gceClusterConfig": {
"zoneUri": ""
},
"masterConfig": {
"numInstances": 1,
"instanceFlexibilityPolicy": {
"instanceSelectionList": [
{
"machineTypes": ["e2-standard-8"],
"rank": 0
},
{
"machineTypes": ["n2-standard-8"],
"rank": 1
}
]
}
},
"workerConfig": {
"numInstances": 10,
"instanceFlexibilityPolicy": {
"instanceSelectionList": [
{
"machineTypes": ["e2-standard-8"],
"rank": 0
},
{
"machineTypes": ["n2-standard-8"],
"rank": 1
}
]
}
},
"secondaryWorkerConfig": {
"numInstances": 4,
"instanceFlexibilityPolicy": {
"instanceSelectionList": [
{
"machineTypes": ["e2-standard-8"],
"rank": 0
},
{
"machineTypes": ["n2-standard-8"],
"rank": 1
}
]
}
}
}
}
Remplacer les propriétés des VM Flex
Managed Service pour Apache Spark définit les propriétés au niveau du cluster. Lorsque vous créez un cluster qui utilise des VM flexibles, vous pouvez remplacer les propriétés générées par le système pour les types de VM Flex principaux et secondaires.
gcloud
Pour remplacer les propriétés lorsque vous créez un cluster, utilisez l'indicateur --properties avec la syntaxe suivante :
--properties="$ROLE:$MACHINE_TYPE:$COMPONENT_PREFIX:$COMPONENT_PROPERTY=$VALUE"
- ROLE peut être
primary_workerousecondary_worker. - Séparez plusieurs propriétés par une virgule.
La commande gcloud dataproc clusters create suivante remplace le nombre de processeurs virtuels que YARN alloue à NodeManager sur les nœuds de calcul secondaires.
Cet exemple définit la valeur yarn.nodemanager.resource.cpu-vcores dans yarn-site.xml sur 6 pour toutes les VM de nœuds de calcul secondaires e2-standard-8 et n2-standard-8.
gcloud dataproc clusters create CLUSTER_NAME \
--num-workers=10 \
--num-secondary-workers=4 \
--worker-machine-types="type=e2-standard-8,rank=0" \
--worker-machine-types="type=n2-standard-8,rank=1" \
--master-machine-types="type=e2-standard-8,rank=0" \
--master-machine-types="type=n2-standard-8,rank=1" \
--secondary-worker-machine-types="type=e2-standard-8,rank=0" \
--secondary-worker-machine-types="type=n2-standard-8,rank=1" \
--region=us-central1 \
--zone="" \
--properties="secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6,secondary_worker:n2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"
API
Pour remplacer les propriétés, définissez-les dans le properties champ de l'
SoftwareConfig
objet de votre requête de création de cluster.
Utilisez la syntaxe suivante pour la clé de propriété :
ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY
- ROLE peut être
primary_workerousecondary_worker.
L'objet SoftwareConfig suivant remplace le nombre de processeurs virtuels que YARN alloue à NodeManager sur les nœuds de calcul secondaires. Cet exemple définit la valeur yarn.nodemanager.resource.cpu-vcores sur 6 pour toutes les VM de nœuds de calcul secondaires e2-standard-8 et n2-standard-8.
{
"imageVersion":"2.2.42",
"properties": {
"secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores" : "6",
"secondary_worker:n2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores" : "6"
}
}
Étape suivante
- En savoir plus sur les propriétés des clusters Managed Service pour Apache Spark.
- Découvrez comment créer un cluster Managed Service pour Apache Spark.