Questa guida descrive come spostare i job Apache Hadoop in Google Cloud (Google Cloud) utilizzando Dataproc.
Questa è la terza di tre guide che descrivono come passare da Hadoop on-premise:
- La pagina Migrazione dell'infrastruttura Hadoop on-premise a Google Cloud fornisce una panoramica del processo di migrazione, con particolare attenzione al passaggio da cluster di grandi dimensioni e permanenti a un modello temporaneo.
- La migrazione dei dati HDFS da on-premise a Google Cloud descrive la procedura di spostamento dei dati in Cloud Storage e in altri Google Cloud prodotti.
- Questa guida è incentrata sul trasferimento dei job Hadoop a Dataproc.
Esecuzione di job Hadoop su Google Cloud
Puoi utilizzare Dataproc per eseguire la maggior parte dei job Hadoop su Google Cloud. L'elenco seguente 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.
Se vuoi, monitora i log dei job utilizzando Cloud Logging o 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 fornisce 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 su ogni nodo al momento della sua 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. In questo caso, l'unica modifica necessaria ai job è aggiornare gli URI, sostituendo 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 operazione non è consigliata. Scopri di più su come spostare i 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, crei cluster temporanei quando ne hai bisogno ed elimini quando i job sono stati completati. 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 considerazioni importanti 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 utilizzare. Può essere difficile calcolare la configurazione del cluster perfetta, perché ogni job ha le sue esigenze e idiosincrasie particolari. Prova diverse configurazioni per trovare la configurazione giusta per il tuo lavoro.
Quando configuri un cluster, devi determinare almeno:
- 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 nodi sono definiti dal numero di CPU virtuali e dalla quantità di memoria disponibile. 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. A questo punto, l'approccio migliore è modificare la configurazione e monitorare l'effetto sull'esecuzione del job. Man mano che inizi a ottimizzare la configurazione dei job, inizierai a capire come gestire altri job nel sistema.
Tieni presente che puoi scalare il cluster in base alle esigenze, quindi non è necessario avere la specifica perfetta definita fin dall'inizio.
Scegliere le opzioni del disco principale
Puoi specificare le dimensioni del disco principale utilizzato dai nodi worker. Le opzioni giuste per un cluster dipendono dai tipi di job che vuoi eseguire su di esso. 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 tuo job richiede molto spazio su disco e si esegue lentamente sui singoli nodi, puoi aggiungere altro spazio su disco principale. 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 SSD sufficienti per contenere tutto lo spazio di cui hai bisogno per l'esecuzione locale. Le directory di esecuzione locali vengono distribuite su tutte le unità SSD aggiunte.
Utilizzo di nodi worker preemptible
Puoi ottenere potenza di elaborazione a basso costo per i tuoi job aggiungendo al cluster nodi worker preemptibili. 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 la preemption, ma i job potrebbero non riuscire se perdono troppi nodi. Utilizza solo i nodi prerilasciabili per i job a tolleranza di errore o con priorità sufficientemente bassa in modo che i guasti occasionali dei job non interrompano la tua attività.
Se decidi di utilizzare i nodi worker preemptible, considera il rapporto tra i nodi regolari e i nodi preemptible. Non esiste una formula universale per ottenere i migliori risultati, ma in generale, più nodi preempetivi utilizzi rispetto ai nodi standard, maggiori sono le probabilità che il job non disponga di nodi sufficienti per completare l'attività. Puoi determinare il rapporto migliore tra nodi preemibili 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 preemptible. Se utilizzi unità SSD sui tuoi nodi dedicati, tutti i nodi worker preemptibili che utilizzi corrisponderanno a ogni altro aspetto dei nodi dedicati, ma non avranno unità 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.
Ottenere l'output del job
I job eseguiti su Dataproc hanno in genere diversi tipi di output. Il 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 anche i log e l'output della console e li inserisce nel bucket di staging 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 se riscontra problemi. Questa opzione è utile per i job che si basano su risorse o circostanze molto 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 singoli job in genere non è complesso, ma un sistema Hadoop può includere decine o centinaia di job. 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 gestire più facilmente i tuoi job in futuro:
- Utilizza le etichette personalizzate per identificare job, cluster e altre risorse. L'utilizzo delle etichette semplifica l'uso di un filtro per trovare le risorse in un secondo momento. Dataproc supporta le etichette personalizzate utilizzando ilGoogle Cloud sistema di etichette standard, pertanto quando etichetti una risorsa, puoi gestirla in altri Google Cloud servizi.
- Organizza i bucket Cloud Storage per 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. È 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 su Hadoop:
Esplora architetture di riferimento, diagrammi e best practice su Google Cloud. Consulta il nostro Cloud Architecture Center.