Migrazione di job Hadoop da on-premise a Dataproc

Last reviewed 2024-04-17 UTC

Questa guida descrive come spostare i job Apache Hadoop in Google Cloud (Google Cloud) utilizzando Dataproc.

Questa è la terza delle tre guide che descrivono come passare da Hadoop on-premise:

Esecuzione di job Hadoop su Google Cloud

Puoi utilizzare Dataproc per eseguire la maggior parte dei tuoi job Hadoop su Google Cloud. Il seguente elenco riassume la procedura di base:

  1. Aggiorna il job in modo che punti ai dati permanenti archiviati in Cloud Storage.

  2. Creare un cluster Dataproc su cui eseguire il job. Questo tipo di cluster temporaneo a uso singolo è chiamato cluster temporaneo.

  3. Invia il tuo job al cluster temporaneo.

  4. Facoltativamente, monitora i log del job utilizzando Cloud Logging o Cloud Storage. I log vengono acquisiti in Cloud Storage per impostazione predefinita utilizzando il bucket gestione temporanea specificato al momento della creazione del cluster.

  5. Controlla l'output del job su Cloud Storage.

  6. Al termine del job, elimina il cluster.

Job supportati

Dataproc esegue Hadoop, quindi sono supportati automaticamente molti tipi di job. Quando crei un cluster con Dataproc, per impostazione predefinita vengono configurate le seguenti tecnologie:

  • Hadoop
  • Spark
  • Hive
  • Pig

Dataproc fornisce diverse versioni di immagini macchina con diverse versioni di software open source preinstallate. È possibile eseguire molti job con il solo software preconfigurato su un'immagine. Per alcuni job potresti dover installare altri pacchetti. Dataproc offre un meccanismo chiamato azioni di inizializzazione, che consente di personalizzare il software in esecuzione sui nodi del tuo cluster. Puoi utilizzare le azioni di inizializzazione per creare script che vengono eseguiti su ogni nodo al momento della creazione.

Aggiornamento delle località dei dati (URI)

Il connettore Cloud Storage, preinstallato sui nodi dei cluster Dataproc, consente ai tuoi job di utilizzare Cloud Storage come file system compatibile con Hadoop (HCFS). Archivia i dati in Cloud Storage in modo da poter sfruttare il connettore. In questo caso, l'unica modifica necessaria ai job sarà aggiornare gli URI, sostituendo hdfs:// con gs://.

Se riorganizzi i dati come parte della migrazione, prendi nota di tutti i percorsi di origine e di destinazione in modo da poter aggiornare facilmente i job in modo che funzionino con la nuova organizzazione dati.

È possibile archiviare i dati in HDFS in cluster permanenti nel cloud, ma questa operazione è sconsigliata. Per scoprire di più sullo spostamento dei dati, consulta la guida alla migrazione dei dati.

Configurazione dei cluster per l'esecuzione dei job

Con l'approccio consigliato per l'esecuzione dei tuoi job su Google Cloud, puoi creare cluster temporanei quando ne hai bisogno e eliminarli al termine dei job. Questo approccio ti offre molta flessibilità nella configurazione dei cluster. Puoi utilizzare una configurazione diversa per ogni job o creare diverse configurazioni di cluster standard per gestire gruppi di job.

La procedura di base per la creazione di cluster è disponibile nella documentazione di Dataproc. Il resto di questa sezione descrive alcune delle importanti considerazioni sulla configurazione dei cluster per aiutarti a decidere come procedere.

Dimensionamento del cluster

La prima cosa da fare per definire un nuovo cluster è decidere quale hardware virtuale utilizzare per il cluster. Può essere difficile calcolare la configurazione perfetta del cluster, perché ogni job ha esigenze ed idiosincrasie peculiari. Prova diverse configurazioni per trovare quella giusta per il tuo job.

Quando configuri un cluster, devi determinare almeno:

  • Numero di nodi da utilizzare.
  • Il tipo di macchina virtuale da utilizzare per il nodo primario (master).
  • Il tipo di macchina virtuale da utilizzare per i nodi worker.

I tipi di nodo sono definiti dal numero di CPU virtuali e dalla quantità di memoria disponibile. Le definizioni corrispondono ai tipi di macchina di Compute Engine. In genere puoi trovare un tipo di nodo che corrisponde alla configurazione dei nodi on-premise da cui stai eseguendo la migrazione. Puoi utilizzare questa equivalenza come punto di partenza, configurando un cluster simile al tuo cluster on-premise. A questo punto, l'approccio migliore consiste nel modificare la configurazione e monitorare l'effetto sull'esecuzione del job. Quando inizi a ottimizzare la configurazione dei tuoi job, potrai iniziare a farti un'idea di come approcciare i job aggiuntivi nel tuo sistema.

Tieni presente che puoi scalare il cluster in base alle esigenze, senza dover definire la specifica perfetta fin dall'inizio.

Scelta delle opzioni del disco primario

Puoi specificare la dimensione del disco primario utilizzato dai nodi worker. Le opzioni giuste per un cluster dipendono dai tipi di job che eseguirai nel cluster. Utilizza il valore predefinito e valuta i risultati, a meno che tu non sappia che i tuoi job hanno richieste insolite per l'utilizzo del disco primario.

Se il job prevede un uso intensivo del disco e viene eseguito lentamente su singoli nodi, puoi aggiungere altro spazio sul disco primario. Per i job che richiedono un uso intensivo dei dischi, in particolare quelli con molte operazioni individuali di lettura e scrittura, potresti essere in grado di migliorare il funzionamento aggiungendo SSD locali. Aggiungi un numero di SSD sufficiente a contenere tutto lo spazio necessario per l'esecuzione locale. Le directory di esecuzione locali sono sparse su tutti i dischi SSD che aggiungi.

Utilizzo di nodi worker prerilasciabili

Puoi ottenere una potenza di elaborazione a basso costo per i tuoi job aggiungendo nodi worker prerilasciabili al tuo cluster. Questi nodi utilizzano macchine virtuali prerilasciabili.

Considera l'inaffidabilità intrinseca dei nodi prerilasciabili prima di scegliere di utilizzarli. Dataproc tenta di gestire in modo ottimale la prerilascio, ma i job potrebbero non riuscire se perdono troppi nodi. Utilizza i nodi prerilasciabili solo per i job a tolleranza di errore o con una priorità sufficientemente bassa da impedire l'interruzione occasionale dei job per impedire l'interruzione dell'attività.

Se decidi di utilizzare nodi worker prerilasciabili, valuta il rapporto tra nodi regolari e nodi prerilasciabili. Non esiste una formula universale per ottenere i migliori risultati, ma in generale più nodi prerilasciabili utilizzi rispetto ai nodi standard, maggiori sono le probabilità che il job non abbia abbastanza nodi per completare l'attività. Puoi determinare il rapporto migliore tra nodi prerilasciabili e nodi normali per un job sperimentando rapporti diversi e analizzando i risultati.

Tieni presente che le unità SSD non sono disponibili sui nodi worker prerilasciabili. Se utilizzi SSD sui tuoi nodi dedicati, tutti i nodi worker prerilasciabili che utilizzi corrisponderanno a ogni altro aspetto dei nodi dedicati, ma non avranno SSD disponibili.

Job in esecuzione

Dataproc offre diverse interfacce da utilizzare per avviare i job, tutte descritte nella documentazione del prodotto. Questa sezione descrive le opzioni e le operazioni da considerare durante l'esecuzione dei tuoi job Hadoop su Google Cloud.

Recupero dell'output del job

I job eseguiti su Dataproc di solito hanno diversi tipi di output. Il tuo job potrebbe scrivere direttamente molti tipi di output, ad esempio in file in un bucket Cloud Storage o in un altro prodotto cloud come BigQuery. Dataproc raccoglie inoltre i log e l'output della console e li inserisce nel bucket di gestione temporanea di Cloud Storage associato al cluster su cui esegui il job.

Utilizzo di job riavviabili

Quando invii un job, puoi configurarlo in modo che si riavvii automaticamente in caso di problemi. Questa opzione è utile per i job che si basano su risorse o circostanze altamente variabili. Ad esempio, i lavori che trasmettono dati in streaming su canali potenzialmente inaffidabili (come la rete internet pubblica) sono particolarmente inclini a errori casuali dovuti a errori di timeout e a problemi di rete simili. Esegui job come riavviabili se puoi immaginare situazioni in cui il job non riesce, ma viene eseguito correttamente dopo breve tempo.

Scalabilità del cluster

Dataproc semplifica l'aggiunta o la rimozione dei nodi dal cluster in qualsiasi momento, anche durante l'esecuzione del job. La documentazione di Dataproc include istruzioni dettagliate per la scalabilità del cluster. La scalabilità include l'opzione per il ritiro controllato dei nodi. Con questa opzione, i nodi che stanno per essere eliminati hanno il tempo di completare l'elaborazione in corso.

Gestione dei job nel tempo

Gestire i singoli job non è di solito complesso, ma un sistema Hadoop può includerne decine o centinaia. Nel tempo prolifera il numero di log, file di output e altre informazioni associate a ciascun job, il che può rendere difficile l'individuazione di singole informazioni. Ecco alcune cose che puoi fare per semplificare la gestione dei tuoi job per il futuro:

  • Utilizza le etichette personalizzate per identificare job, cluster e altre risorse. L'uso delle etichette semplifica l'uso di un filtro per trovare risorse in un secondo momento. Dataproc supporta le etichette personalizzate utilizzando il sistema di etichette standard di Google Cloud. Di conseguenza, quando etichetti una risorsa, puoi gestirla in altri servizi Google Cloud.
  • Organizza i tuoi bucket Cloud Storage in modo da mantenere separati i diversi tipi di job. Anche il raggruppamento dei dati in bucket corrispondenti alla struttura aziendale o alle aree funzionali può semplificare la gestione delle autorizzazioni.
  • Definisci cluster per singoli job o per gruppi di job strettamente correlati. Aggiornare la configurazione dei cluster temporanei è molto più semplice se utilizzi ciascuna configurazione solo per job con ambito adeguato.

Passaggi successivi