Lorsque vous créez un cluster Dataproc, vous pouvez le passer en mode haute disponibilité (HA) Hadoop en spécifiant le nombre d'instances maîtres dans le cluster. Le nombre d'instances maîtres ne peut être spécifié qu'au moment de la création du cluster.
À l'heure actuelle, Dataproc est compatible avec deux configurations d'instances maîtres :
- Une instance maître (par défaut, instance standard)
- Trois instances maîtres (haute disponibilité Hadoop)
Comparer le mode par défaut et le mode haute disponibilité Hadoop
Défaillance de Compute Engine : dans les rares cas de défaillance inattendue de Compute Engine, les instances Dataproc seront redémarrées. La configuration Dataproc par défaut à une seule instance maître est conçue pour récupérer et poursuivre le traitement de nouveaux travaux, le cas échéant. Toutefois, les tâches en cours de transfert vont forcément échouer et devront être relancées. En outre, HDFS sera inaccessible jusqu'à ce que le composant unique NameNode soit complètement restauré après le redémarrage. En mode haute disponibilité, la haute disponibilité HDFS et la haute disponibilité YARN sont configurées pour autoriser des opérations YARN et HDFS ininterrompues, même en cas de défaillance ou de redémarrage d'un nœud unique.
Arrêt du pilote des tâches : le pilote/programme principal de toutes les tâches que vous exécutez représente toujours un point de défaillance unique potentiel si l'exactitude de votre tâche dépend de la réussite de l'exécution du programme de pilote. Les tâches soumises via l'API Dataproc ne sont pas considérées comme étant à "haute disponibilité" et seront tout de même arrêtées en cas de défaillance du nœud maître exécutant les programmes de pilote de tâche correspondants. Pour assurer la résilience des tâches individuelles face aux défaillances d'un nœud unique, en utilisant un cluster à haute disponibilité Cloud Dataproc, la tâche doit 1) être exécutée sans programme de pilote synchrone, ou 2) exécuter le programme de pilote elle-même dans un conteneur YARN, et elle doit être autorisée à gérer les redémarrages du programme de pilote. Consultez la section sur le lancement de Spark sur YARN pour découvrir un exemple d'exécution des programmes de pilote redémarrables dans des conteneurs YARN pour la tolérance aux pannes.
Défaillance zonale : comme pour tous les clusters Dataproc, tous les nœuds d'un cluster à haute disponibilité résident dans la même zone. Si une défaillance affecte tous les nœuds d'une zone, celle-ci ne sera pas corrigée.
Noms d'instance
L'instance maître par défaut est nommée cluster-name-m
; les instances maîtres à haute disponibilité sont nommées cluster-name-m-0
, cluster-name-m-1
et cluster-name-m-2
.
Apache ZooKeeper
Dans un cluster à haute disponibilité Dataproc, le composant ZooKeeper est automatiquement installé sur les nœuds maîtres du cluster. Toutes les instances maîtres participent à un cluster ZooKeeper, provoquant l'activation du basculement automatique pour d'autres services Hadoop.
HDFS
Dans un cluster Dataproc standard :
cluster-name-m
exécute :- Le composant NameNode
- Le composant NameNode secondaire
Dans un cluster Dataproc à haute disponibilité :
cluster-name-m-0
etcluster-name-m-1
exécutent :- Le composant NameNode
- Le composant ZKFailoverController
- Toutes les instances maîtres exécutent le composant JournalNode
- Il n'y a pas de composant NameNode secondaire
Veuillez consulter la documentation relative à la haute disponibilité HDFS pour plus de détails sur les composants.
YARN
Dans un cluster Dataproc standard, cluster-name-m
exécute le composant ResourceManager.
Dans un cluster Dataproc à haute disponibilité, toutes les instances maîtres exécutent le composant ResourceManager.
Veuillez consulter la documentation relative à la haute disponibilité YARN pour plus de détails sur les composants.
Créer un cluster à haute disponibilité
Commande gcloud
Pour créer un cluster à haute disponibilité avec gcloud dataproc clusters create, exécutez la commande suivante :
gcloud dataproc clusters create cluster-name \ --region=region \ --num-masters=3 \ ... other args
API REST
Pour créer un cluster à haute disponibilité, utilisez l'API clusters.create en définissant masterConfig.numInstances sur 3
.
Console
Pour créer un cluster à haute disponibilité, sélectionnez l'option "Haute disponibilité" (trois maîtres, N nœuds de calcul) dans la section "Type de cluster" du panneau "Configurer le cluster" de la page Créer un cluster.