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 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. Crea un cluster Dataproc su cui eseguire il job. Questo tipo di cluster temporaneo monouso è chiamato cluster temporaneo.

  3. Invia il job al cluster temporaneo.

  4. Facoltativamente, monitora i log dei job utilizzando Cloud Logging o Cloud Storage. I log vengono acquisiti in Cloud Storage per impostazione predefinita, utilizzando il bucket gestione temporanea specificato durante la 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, perciò molti tipi di job sono supportati automaticamente. Quando crei un cluster con Dataproc, le seguenti tecnologie sono configurate per impostazione predefinita:

  • Hadoop
  • Spark
  • Hive
  • Pig

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

Aggiornamento delle posizioni dei dati (URI)

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

Se riorganizzi i dati nell'ambito 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 dei dati.

È possibile archiviare i dati in HDFS in cluster permanenti nel cloud, ma questa operazione non è consigliata. Puoi scoprire di più sullo spostamento dei dati nella guida alla migrazione dei dati.

Configurazione dei cluster per l'esecuzione dei job

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

Puoi trovare i passaggi di base per la creazione di cluster nella documentazione di Dataproc. Il resto di questa sezione descrive alcune delle importanti considerazioni sulla configurazione del cluster per aiutarti a decidere come procedere.

Dimensionamento del cluster

La prima cosa da fare per definire un nuovo cluster è decidere quale hardware virtuale utilizzarlo. Può essere difficile calcolare la configurazione perfetta del cluster, poiché ogni job ha esigenze e idiosincrasie specifiche. Prova diverse configurazioni per trovare la configurazione più adatta al tuo job.

Quando configuri un cluster, devi determinare almeno quanto segue:

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

I tipi di nodo sono definiti in base al numero di CPU virtuali e alla quantità di memoria che hanno a disposizione. Le definizioni corrispondono ai tipi di macchine di Compute Engine. In genere, puoi trovare un tipo di nodo che corrisponde alla configurazione dei nodi on-premise da cui esegui la migrazione. Puoi utilizzare questa equivalenza come punto di partenza, configurando un cluster simile a quello on-premise. Da qui, l'approccio migliore consiste nel modificare la configurazione e monitorare l'effetto sull'esecuzione del job. Man mano che inizi a ottimizzare la configurazione dei job, inizierai a farti un'idea di come affrontare ulteriori job nel tuo sistema.

Tieni presente che puoi scalare il cluster in base alle tue esigenze, quindi non è necessario definire la specifica perfetta sin dall'inizio.

Scelta delle opzioni del disco primario

Puoi specificare le dimensioni del disco primario utilizzato dai nodi worker. Le opzioni giuste per un cluster dipendono dai tipi di job su cui verrà eseguito. Utilizza il valore predefinito e valuta i risultati, a meno che tu non sappia che i tuoi job hanno esigenze insolite di utilizzo del disco primario.

Se il job richiede un utilizzo 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 del disco, in particolare quelli con molte operazioni di lettura e scrittura individuali, potresti migliorare il funzionamento aggiungendo SSD locali. Aggiungi un numero sufficiente di SSD per contenere tutto lo spazio necessario per l'esecuzione locale. Le directory di esecuzione locali sono distribuite su tutti gli 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 cluster. Questi nodi utilizzano macchine virtuali prerilasciabili.

Prima di scegliere di utilizzarli, considera l'inaffidabilità intrinseca dei nodi prerilasciabili. Dataproc cerca di gestire senza problemi il 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 non interrompere l'attività in caso di errori occasionali dei job.

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

Tieni presente che le unità SSD non sono disponibili sui nodi worker prerilasciabili. Se utilizzi unità SSD sui nodi dedicati, tutti i nodi worker prerilasciabili che utilizzi corrisponderanno a tutti gli altri aspetti dei nodi dedicati, ma non avranno unità SSD disponibili.

Job in esecuzione

Dataproc offre diverse interfacce che puoi 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 job Hadoop su Google Cloud.

Recupero dell'output del job

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

Utilizzo di job riavviabili

Quando invii un job, puoi configurarlo per il riavvio automatico se si verificano problemi. Questa opzione è utile per i job che si basano su risorse o circostanze molto variabili. Ad esempio, i job che trasmettono dati attraverso canali potenzialmente inaffidabili (come la rete internet pubblica) sono particolarmente soggetti a errori casuali a causa di errori di timeout e problemi di rete simili. Esegui job come riavviabili se riesci a immaginare situazioni in cui il job non riesce, ma viene eseguito correttamente poco tempo dopo.

Scalabilità del cluster

Dataproc semplifica l'aggiunta o la rimozione di nodi per il cluster in qualsiasi momento, anche mentre il job è in esecuzione. 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, ai nodi che verranno eliminati viene concesso il tempo di completare l'elaborazione.

Gestione dei job nel tempo

Gestire i singoli lavori di solito non è complesso, ma un sistema Hadoop può includere decine o centinaia di job. Nel corso del tempo, il numero di log, file di output e altre informazioni associate a ogni job proliferano, il che può rendere difficile trovare singole informazioni. Ecco alcune cose che puoi fare per semplificare la gestione futura dei tuoi lavori:

  • Utilizza le etichette personalizzate per identificare job, cluster e altre risorse. Con le etichette è facile usare un filtro per trovare le risorse in un secondo momento. Dataproc supporta le etichette personalizzate tramite il sistema standard di etichette di Google Cloud; pertanto, quando etichetti una risorsa, può aiutarti a gestirla in altri servizi Google Cloud.
  • Organizza i tuoi bucket Cloud Storage per mantenere separati i diversi tipi di job. Il raggruppamento dei dati in bucket corrispondenti alla struttura aziendale o alle aree funzionali della tua azienda può inoltre semplificare la gestione delle autorizzazioni.
  • Definisci i cluster per singoli job o per gruppi di job strettamente correlati. È molto più facile aggiornare la configurazione per i cluster temporanei se utilizzi ogni configurazione solo per job con un ambito ben definito.

Passaggi successivi