Questo documento del Framework dell'architettura Google Cloud fornisce suggerimenti per aiutarti a ottimizzare le prestazioni dei carichi di lavoro di analisi in Google Cloud.
BigQuery
Questa sezione fornisce suggerimenti per aiutarti a ottimizzare le prestazioni delle query in BigQuery.
Ottimizza il design delle query
Il rendimento delle query dipende da fattori quali il numero di byte letti e scritti dalle query e il volume di dati trasmessi tra gli slot. Per ottimizzare le prestazioni delle query in BigQuery, applica le best practice descritte nella seguente documentazione:
- Introduzione all'ottimizzazione del rendimento delle query
- Gestire i dati di input e le origini dati
- Ottimizzazione delle comunicazioni tra slot
- Ottimizzare il calcolo delle query
- Gestire gli output delle query
- Evitare gli anti-pattern SQL
Definire e utilizzare le viste materializzate in modo efficiente
Per migliorare le prestazioni dei carichi di lavoro che utilizzano query comuni e ripetute, puoi utilizzare viste materializzate. Esistono limiti al numero di visualizzazioni con dati materiali che puoi creare. Non creare una vista materializzata distinta per ogni permutazione di una query. Definisci invece viste materializzate che puoi utilizzare per più pattern di query.
Migliorare le prestazioni di JOIN
Puoi utilizzare le viste materializzate per ridurre il costo e la latenza di una query che esegue l'aggregazione su un JOIN
.
Considera un caso in cui unisci una grande tabella di fatti con alcune piccole tabella di dimensioni, quindi esegui un'aggregazione sulla combinazione. Potrebbe essere pratico riscrivere la query per eseguire prima
l'aggregazione sulla tabella dei fatti con le chiavi esterne come chiavi di raggruppamento.
Quindi, unisci il risultato alle tabelle delle dimensioni. Infine, esegui un'aggregazione post-aggregazione.
Dataflow
Questa sezione fornisce suggerimenti per aiutarti a ottimizzare le prestazioni delle query delle tue pipeline Dataflow.
Quando crei e esegui il deployment delle pipeline, puoi configurare i parametri di esecuzione, come il tipo di macchina Compute Engine da utilizzare per le VM di lavoro Dataflow. Per saperne di più, consulta Opzioni pipeline.
Dopo aver eseguito il deployment delle pipeline, Dataflow gestisce le risorse Compute Engine e Cloud Storage necessarie per eseguire i job. Inoltre, le seguenti funzionalità di Dataflow contribuiscono a ottimizzare il rendimento delle pipeline:
- Parallelizzazione: Dataflow suddivide automaticamente i dati e distribuisce il codice dei worker alle istanze Compute Engine per l'elaborazione in parallelo. Per ulteriori informazioni, consulta la sezione su parallelizzazione e distribuzione.
- Ottimizzazione: Dataflow utilizza il codice della pipeline per creare un grafo di esecuzione che rappresenta gli oggetti PCollection e le trasformazioni nella pipeline. Poi ottimizza il grafico per ottenere le prestazioni e l'utilizzo delle risorse più efficienti. Inoltre, Dataflow ottimizza automaticamente le operazioni potenzialmente costose, come le aggregazioni di dati. Per maggiori informazioni, consulta Ottimizzazione di Fusion e Ottimizzazione combinata.
- Ottimizzazione automatica: Dataflow ottimizza dinamicamente i job durante l'esecuzione utilizzando la scalabilità automatica orizzontale, la scalabilità automatica verticale e la ridistribuzione dinamica del lavoro.
Puoi monitorare le prestazioni delle pipeline di Dataflow utilizzando l'interfaccia di monitoraggio basata su web o gcloud CLI di Dataflow.
Dataproc
Questa sezione descrive le best practice per ottimizzare il rendimento dei cluster Dataproc.
Scalabilità automatica dei cluster
Per assicurarti che i tuoi cluster Dataproc offrano prestazioni prevedibili, puoi attivare la scalabilità automatica. Dataproc utilizza metriche di memoria YARN Hadoop e un criterio di scalabilità automatica che definisci per regolare automaticamente il numero di VM worker in un cluster. Per ulteriori informazioni su come utilizzare e configurare la scalabilità automatica, consulta Cluster a scalabilità automatica.
Provisioning dello spazio di archiviazione appropriato
Scegli un'opzione di archiviazione appropriata per il tuo cluster Dataproc in base ai requisiti di prestazioni e costi:
- Se hai bisogno di un file system compatibile con Hadoop (HCFS) a basso costo in cui i job Hadoop e Spark possano leggere e scrivere con modifiche minime, utilizza Cloud Storage. I dati archiviati in Cloud Storage sono permanenti e possono essere accessibili da altri cluster Dataproc e da altri prodotti come BigQuery.
- Se hai bisogno di un Hadoop Distributed File System (HDFS) a bassa latenza per il tuo cluster Dataproc, utilizza i dischi permanenti Compute Engine collegati ai nodi worker. I dati archiviati nello spazio di archiviazione HDFS sono temporanei e il costo di archiviazione è superiore all'opzione Cloud Storage.
- Per ottenere il vantaggio in termini di prestazioni dei dischi permanenti di Compute Engine e i vantaggi in termini di costo e durata di Cloud Storage, puoi combinare entrambe le opzioni di archiviazione. Ad esempio, puoi archiviare i set di dati di origine e finali in Cloud Storage e eseguire il provisioning di una capacità HDFS limitata per i set di dati intermedi. Quando decidi le dimensioni e il tipo di dischi per lo spazio di archiviazione HDFS, prendi in considerazione i consigli riportati nella sezione Dischi permanenti e SSD locali.
Ridurre la latenza quando si utilizza Cloud Storage
Per ridurre la latenza quando accedi ai dati archiviati in Cloud Storage, consigliamo quanto segue:
- Crea il bucket Cloud Storage nella stessa regione del cluster Dataproc.
- Disattiva
auto.purge
per le tabelle gestite da Apache Hive archiviate in Cloud Storage. - Quando utilizzi Spark SQL, ti consigliamo di creare cluster Dataproc con le versioni più recenti delle immagini disponibili. Se utilizzi la versione più recente, puoi evitare i problemi di rendimento che potrebbero persistere nelle versioni precedenti, ad esempio il rendimento lento di
INSERT OVERWRITE
in Spark 2.x. - Per ridurre al minimo la possibilità di scrivere molti file di dimensioni variabili o ridotte su Cloud Storage, puoi configurare i parametri Spark SQL
spark.sql.shuffle.partitions
espark.default.parallelism
o il parametro Hadoopmapreduce.job.reduces
.
Monitora e modifica il carico e la capacità dello spazio di archiviazione
I dischi permanenti collegati ai nodi worker in un cluster Dataproc contengono i dati di shuffling. Per funzionare in modo ottimale, i nodi worker richiedono spazio su disco sufficiente. Se i nodi non dispongono di spazio su disco sufficiente, vengono contrassegnati come UNHEALTHY
nel log di YARN NodeManager. Se si verifica questo problema, aumenta le dimensioni del disco per i nodi interessati o esegui meno job contemporaneamente.
Attiva EFM
Quando i nodi worker vengono rimossi da un cluster Dataproc in esecuzione, ad esempio a causa di un ridimensionamento o di una prelazione, i dati elaborati in ordine casuale potrebbero andare persi. Per minimizzare i ritardi dei job in questi scenari, ti consigliamo di attivare la modalità di flessibilità avanzata (EFM) per i cluster che utilizzano VM preattivabili o che eseguono la scalabilità automatica solo del gruppo di worker secondari.
Passaggi successivi
Consulta le best practice per ottimizzare le prestazioni delle risorse di calcolo, archiviazione, networking e database:
- Ottimizza le prestazioni di calcolo.
- Ottimizza il rendimento dello spazio di archiviazione.
- Ottimizza le prestazioni di rete.
- Ottimizza il rendimento del database.