Questa guida descrive come spostare i job Apache Hadoop su Google Cloud utilizzando Dataproc.
Questa è la terza di tre guide che descrivono come passare da Hadoop on-premise:
- Migrazione dell'infrastruttura Hadoop on-premise a Google Cloud fornisce una panoramica della procedura di migrazione, con particolare attenzione al passaggio da cluster di grandi dimensioni e permanenti a un modello effimero.
- L'articolo Eseguire la migrazione dei dati HDFS da on-premise a Google Cloud descrive la procedura di trasferimento dei dati in Cloud Storage e in altri prodotti Google Cloud.
- Questa guida è incentrata sul trasferimento dei job Hadoop a Dataproc.
Esecuzione di job Hadoop su Google Cloud
Puoi usare Dataproc per eseguire la maggior parte dei tuoi job Hadoop in Google Cloud. Il seguente elenco riassume la procedura di base:
Aggiorna il job in modo che indichi i dati permanenti archiviati in Cloud Storage.
Crea un cluster Dataproc su cui eseguire il job. Questo tipo di cluster temporaneo e monouso è chiamato cluster ephemeral.
Invia il job al cluster temporaneo.
Facoltativamente, monitora i log del job utilizzando Cloud Logging o di archiviazione ideale in Cloud Storage. Per impostazione predefinita, i log vengono acquisiti in Cloud Storage utilizzando il bucket temporaneo specificato durante la creazione del cluster.
Controlla l'output del job su Cloud Storage.
Al termine del job, elimina il cluster.
Job supportati
Dataproc esegue Hadoop, quindi 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 offre diverse versioni di 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, potresti dover installare altri pacchetti. Dataproc fornisce un meccanismo chiamato azioni di inizializzazione, che ti consente di personalizzare il software in esecuzione sui nodi del cluster. Puoi utilizzare le azioni di inizializzazione per creare script che vengono eseguiti al momento della creazione.
Aggiornamento delle posizioni dei dati (URI)
Il connettore Cloud Storage, preinstallato sui nodi del cluster Dataproc, consente ai job di utilizzare Cloud Storage come file system compatibile con Hadoop (HCFS).
Archivia i tuoi dati in Cloud Storage per poter sfruttare il connettore. Se lo fai, l'unica modifica necessaria ai tuoi job sarà l'aggiornamento
URI in sostituzione di hdfs://
con gs://
.
Se riorganizzi i dati durante la 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 soluzione è sconsigliata. Puoi scoprire di più su come spostare nella guida alla migrazione dei dati.
Configurazione dei cluster per l'esecuzione dei job
Nell'approccio consigliato per eseguire i tuoi job su Google Cloud, crei di cluster temporanei quando ne hai bisogno ed eliminali quando i tuoi job completato. Questo approccio offre molta flessibilità nella configurazione dei cluster. Puoi utilizzare una configurazione diversa per ogni job o 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 decidere come procedere.
Dimensionamento del cluster
La prima cosa da fare per definire un nuovo cluster è decidere quale hardware virtuale utilizzare. Può essere difficile calcolare l'ammasso perfetto perché ogni job ha le sue esigenze e particolarità particolari. Prova diverse configurazioni per trovare la configurazione giusta per il tuo lavoro.
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 che ha 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 iniziale, configurando un cluster simile a quello on-premise. A questo punto, l'approccio migliore è modificare la configurazione e monitorare l'effetto sull'esecuzione del job. Quando inizi a ottimizzare la configurazione di lavoro, inizierai a farti un'idea di come approcciarti ad altri lavori nel tuo di un sistema operativo completo.
Tieni presente che puoi scalare il cluster in base alle esigenze, quindi non è necessario specifiche perfette fin dall'inizio.
Scelta delle opzioni del disco primario
Puoi specificare la dimensione del disco primario utilizzato dai nodi worker. La le opzioni giuste per un cluster dipendono dai tipi di job su cui eseguirai li annotino. Utilizza il valore predefinito e valuta i risultati, a meno che tu non sappia che i tuoi job hanno richieste insolite sull'utilizzo del disco principale.
Se il job prevede un uso intensivo del disco e viene eseguito lentamente su singoli nodi, aggiungere più spazio su disco primario. Per i job che richiedono un'elaborazione particolarmente intensiva del disco, soprattutto quelli con molte operazioni di lettura e scrittura individuali, potresti essere in grado di migliorare il funzionamento aggiungendo SSD locali. Aggiungi un numero sufficiente di SSD per contenere tutti dello spazio necessario per l'esecuzione locale. Le directory di esecuzione locali vengono distribuite su tutte le unità SSD aggiunte.
Utilizzo di nodi worker prerilasciabili
Puoi ottenere potenza di elaborazione a basso costo per i tuoi job aggiungendo nodi worker preemptibili al tuo cluster. Questi nodi utilizzano macchine virtuali prerilasciabili.
Tieni presente l'inaffidabilità intrinseca dei nodi preemptibili prima di scegliere di utilizzarli. Dataproc tenta di gestire senza problemi prerilascio, ma i job potrebbero non riuscire se perdono troppi nodi. Usa solo nodi prerilasciabili per job a tolleranza di errore o sufficientemente bassi la priorità che un errore occasionale del job non interrompi l'attività.
Se decidi di utilizzare nodi worker prerilasciabili, valuta il rapporto tra da nodi a nodi prerilasciabili. Non esiste una formula universale per ottenere ma, in generale, più i nodi prerilasciabili utilizzi rispetto nodi, maggiori sono le probabilità che il job non abbia abbastanza nodi per per completare l'attività. È possibile determinare il miglior rapporto tra annunci prerilasciabili e nodi per un job sperimentando rapporti diversi e analizzando i risultati.
Tieni presente che le unità SSD non sono disponibili sui nodi worker prerilasciabili. Se usi SSD sui tuoi nodi dedicati, tutti i nodi worker prerilasciabili che utilizzi ogni altro aspetto dei nodi dedicati, ma non avranno SSD disponibili.
Job in esecuzione
Dataproc fornisce più interfacce che puoi utilizzare per avviare i tuoi job, tutte descritte nella documentazione del prodotto. Questa sezione descrive le opzioni e le operazioni da prendere in considerazione quando esegui i job Hadoop su Google Cloud.
Recupero dell'output del job
I job eseguiti su Dataproc hanno in genere 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, in BigQuery. Dataproc raccoglie anche log e console e li inserisce nel bucket Cloud Storage bucket gestione temporanea associato al cluster su cui esegui il job.
Utilizzo di job riavviabili
Quando invii un'offerta di lavoro, puoi per configurare il riavvio automatico in caso di problemi. Questa opzione è utile per i job che si basano su risorse o circostanze estremamente variabili. Ad esempio, i job che trasmettono i dati su 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 i job come riavviabili se puoi immaginare situazioni in cui il job non andrebbe a buon fine, ma potrebbe essere eseguito correttamente poco tempo dopo.
Scalabilità del cluster
Dataproc semplifica l'aggiunta o la rimozione di nodi per il cluster in qualsiasi momento, anche durante l'esecuzione del job. La documentazione di Dataproc include istruzioni dettagliate per scalare il cluster. Il ridimensionamento include la possibilità di eseguire il ritiro dei nodi in modo graduale. Con questa opzione, ai nodi che verranno eliminati viene concesso il tempo di completare l'elaborazione in corso.
Gestione dei job nel tempo
Gestire i singoli job non è solitamente complesso, ma un sistema Hadoop può includere decine o centinaia di lavori. Nel tempo, il numero di log, file di output e altre informazioni associate a ogni job aumenta, il che può rendere difficile trovare una singola informazione. Ecco alcune cose che puoi fare per semplificare la gestione dei tuoi job in futuro:
- Utilizza le etichette personalizzate per identificare job, cluster e altre risorse. Le etichette semplificano 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, pertanto quando etichetti una risorsa, puoi gestirla in altri servizi Google Cloud.
- Organizza i tuoi bucket Cloud Storage in modo da conservare diversi tipi di job separate. 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. È molto più facile aggiornare la configurazione dei cluster temporanei se utilizzi ogni configurazione solo per job con ambito ben definito.
Passaggi successivi
Consulta le altre parti della guida alla migrazione di Hadoop:
Esplora architetture di riferimento, diagrammi e best practice su Google Cloud. Dai un'occhiata al nostro Centro architetture cloud.