Ottimizzare il rendimento delle analisi

Last reviewed 2023-08-04 UTC

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:

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:

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 e spark.default.parallelism o il parametro Hadoop mapreduce.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: