Modalità Alta disponibilità

Quando crei un cluster Dataproc, puoi impostarlo in modalità ad alta disponibilità (HA) di Hadoop specificando il numero di istanze master nel cluster. Il numero di master può essere specificato solo al momento della creazione del cluster.

Attualmente Dataproc supporta due configurazioni master:

  • 1 master (predefinito, non ad alta disponibilità)
  • 3 master (Hadoop HA)

Confronto tra la modalità ad alta disponibilità predefinita e quella di Hadoop

  • Errore di Compute Engine: nel raro caso di errore imprevisto di Compute Engine, nelle istanze di Dataproc verrà riavviato la macchina. La configurazione predefinita a master singolo per Dataproc è progettata per recuperare e continuare l'elaborazione di nuovo lavoro in questi casi, ma i job in corso avranno necessariamente esito negativo e dovranno essere ritentati. Inoltre, HDFS sarà inaccessibile fino al ripristino completo del singolo NameNode al riavvio. In modalità ad alta disponibilità, HDFS ad alta disponibilità e YARN ad alta disponibilità sono configurate per consentire operazioni YARN e HDFS ininterrotte nonostante eventuali errori/riavvii di singoli nodi.

  • Terminazione del driver dei job:il driver/programma principale di qualsiasi job che esegui rappresenta ancora un potenziale single point of failure se la correttezza del job dipende dall'esecuzione corretta del programma driver. I job inviati tramite l'API Dataproc Jobs non sono considerati "alta disponibilità" e verranno comunque terminati in caso di errore del nodo master che esegue i programmi driver dei job corrispondenti. Affinché i singoli job siano resilienti contro gli errori di singoli nodi utilizzando un cluster Dataproc Cloud ad alta disponibilità, il job deve 1) essere eseguito senza un programma di driver sincrono oppure 2) eseguire il programma driver stesso all'interno di un container YARN ed essere scritto per gestire i riavvii del programma driver. Consulta Avvio di Spark su YARN per un esempio di come i programmi di driver riavviabili possono essere eseguiti all'interno dei container YARN per la tolleranza agli errori.

  • Errore a livello di zona: come nel caso di tutti i cluster Dataproc, tutti i nodi di un cluster ad alta disponibilità risiedono nella stessa zona. Un errore che interessa tutti i nodi di una zona non viene mitigato.

Nomi istanze

Il master predefinito è denominato cluster-name-m; i master ad alta disponibilità sono denominati cluster-name-m-0, cluster-name-m-1, cluster-name-m-2.

ZooKeeper Apache

In un cluster Dataproc ad alta disponibilità, il componente Zoookeeper viene installato automaticamente sui nodi master del cluster. Tutti i master partecipano a un cluster ZooKeeper, che consente il failover automatico per altri servizi Hadoop.

HDFS

In un cluster Dataproc standard:

  • cluster-name-m esecuzioni:
    • NameNode
    • NameNode secondario

In un cluster Dataproc ad alta disponibilità:

  • cluster-name-m-0 e cluster-name-m-1 eseguite:
    • NameNode
    • ZKFailoverController
  • Tutti gli schemi eseguono JournalNode
  • Non esiste un NameNode secondario

Per ulteriori dettagli sui componenti, consulta la documentazione relativa all'alta disponibilità di HDFS.

FILATO

In un cluster Dataproc standard, cluster-name-m esegue ResourceManager.

In un cluster Dataproc ad alta disponibilità, tutti i master eseguono ResourceManager.

Per ulteriori dettagli sui componenti, consulta la documentazione sull'alta disponibilità YARN.

Creazione di un cluster ad alta disponibilità

Comando g-cloud

Per creare un cluster ad alta disponibilità con gcloud dataproc clusters create, esegui questo comando:
gcloud dataproc clusters create cluster-name \
    --region=region \
    --num-masters=3 \
    ... other args

API REST

Per creare un cluster ad alta disponibilità, utilizza l'API clusters.create, impostando masterConfig.numInstances su 3.

Console

Per creare un cluster ad alta disponibilità, seleziona Alta disponibilità (3 master, N worker) nella sezione Tipo di cluster del riquadro Configura cluster nella pagina Crea un cluster di Dataproc.