Ottimizzare il rendimento dell'analisi

Last reviewed 2023-08-04 UTC

Questo documento nel 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 ottimizzare le prestazioni delle query in BigQuery.

Ottimizza la progettazione delle query

Le prestazioni delle query dipendono da fattori come 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:

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 le viste materializzate. Sono previsti dei limiti al numero di viste materializzate che puoi creare. Non creare una vista materializzata separata per ogni permutazione di una query. Definisci invece le viste materializzate da utilizzare per più pattern di query.

Migliora il rendimento dell'app JOIN

Puoi utilizzare le viste materializzate per ridurre i costi e la latenza di una query che esegue l'aggregazione su una JOIN. Considera un caso in cui unisci una tabella dei fatti di grandi dimensioni con alcune tabelle di dimensioni ridotte e poi esegui un'aggregazione sopra il join. Potrebbe essere pratico riscrivere la query per eseguire prima l'aggregazione nella parte superiore della tabella dei fatti con le chiavi esterne come chiavi di raggruppamento. Poi, unisci il risultato alle tabelle delle dimensioni. Infine, esegui una post-aggregazione.

Dataflow

Questa sezione fornisce suggerimenti per ottimizzare le prestazioni delle query delle pipeline di Dataflow.

Quando crei ed esegui il deployment di pipeline, puoi configurare parametri di esecuzione, come il tipo di macchina Compute Engine da utilizzare per le VM worker Dataflow. Per ulteriori informazioni, consulta la sezione Opzioni di 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 aiutano a ottimizzare le prestazioni delle pipeline:

Puoi monitorare le prestazioni delle pipeline di Dataflow utilizzando l'interfaccia di monitoraggio basata sul web o l'interfaccia a riga di comando gcloud Dataflow.

Dataproc

Questa sezione descrive le best practice per ottimizzare le prestazioni dei cluster Dataproc.

Scalabilità automatica dei cluster

Per assicurarti che i tuoi cluster Dataproc offrano prestazioni prevedibili, puoi abilitare la scalabilità automatica. Dataproc utilizza le metriche di memoria Hadoop YARN e un criterio di scalabilità automatica da te definito per regolare automaticamente il numero di VM worker in un cluster. Per ulteriori informazioni su come utilizzare e configurare la scalabilità automatica, consulta Scalabilità automatica dei cluster.

Esegui il provisioning dello spazio di archiviazione appropriato

Scegli un'opzione di archiviazione appropriata per il tuo cluster Dataproc in base ai tuoi requisiti di prestazioni e costo:

  • Se hai bisogno di un file system compatibile con Hadoop (HCFS) a basso costo da cui i job Hadoop e Spark possono leggere e scrivere con modifiche minime, usa Cloud Storage. I dati archiviati in Cloud Storage sono permanenti e sono accessibili da altri cluster Dataproc e altri prodotti come BigQuery.
  • Se hai bisogno di un HDFS (Hadoop Distributed File System) a bassa latenza per il tuo cluster Dataproc, utilizza dischi permanenti di Compute Engine collegati ai nodi worker. I dati archiviati nello spazio di archiviazione HDFS sono temporanei e il costo dell'archiviazione è superiore rispetto all'opzione Cloud Storage.
  • Per sfruttare i vantaggi in termini di prestazioni dei dischi permanenti di Compute Engine e i vantaggi in termini di costi e durabilità 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 ed eseguire il provisioning di una capacità HDFS limitata per i set di dati intermedi. Quando decidi la dimensione e il tipo dei dischi per l'archiviazione HDFS, tieni conto dei suggerimenti contenuti nella sezione Dischi permanenti e SSD locali.

Ridurre la latenza quando utilizzi Cloud Storage

Per ridurre la latenza quando accedi ai dati archiviati in Cloud Storage, ti consigliamo di procedere come segue:

  • Crea il tuo bucket Cloud Storage nella stessa regione del cluster Dataproc.
  • Disabilita auto.purge per le tabelle gestite da Apache Hive archiviate in Cloud Storage.
  • Quando utilizzi Spark SQL, valuta la possibilità di creare cluster Dataproc con le versioni più recenti delle immagini disponibili. Utilizzando la versione più recente, puoi evitare problemi di prestazioni che potrebbero rimanere nelle versioni precedenti, ad esempio lente prestazioni di INSERT OVERWRITE in Spark 2.x.
  • Per ridurre al minimo la possibilità di scrivere in Cloud Storage molti file di dimensioni varie o piccole, puoi configurare i parametri SQL Spark spark.sql.shuffle.partitions e spark.default.parallelism o il parametro di Hadoop mapreduce.job.reduces.

Monitora e regola il carico e la capacità dello spazio di archiviazione

I dischi permanenti collegati ai nodi worker in un cluster Dataproc conservano i dati shuffling. Per prestazioni ottimali, i nodi worker richiedono sufficiente spazio su disco. Se i nodi non hanno sufficiente spazio su disco, vengono contrassegnati come UNHEALTHY nel log 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 downscaling o prerilascio, i dati di shuffling potrebbero andare persi. Per ridurre al minimo i ritardi dei job in questi scenari, ti consigliamo di abilitare la modalità di flessibilità avanzata (EFM) per i cluster che utilizzano VM prerilasciabili o che scalano automaticamente solo il gruppo di worker secondario.

Passaggi successivi

Consulta le best practice per ottimizzare le prestazioni delle risorse di calcolo, archiviazione, networking e database: