Analyseleistung optimieren

Last reviewed 2023-08-04 UTC

Dieses Dokument im Google Cloud-Architektur-Framework enthält Empfehlungen zur Optimierung der Leistung Ihrer Arbeitslasten zur Datenanalyse in Google Cloud.

BigQuery

Dieser Abschnitt enthält Empfehlungen zur Optimierung der Leistung von Abfragen in BigQuery.

Abfragedesign optimieren

Die Abfrageleistung hängt von Faktoren wie der Anzahl der Bytes, die Ihre Abfragen lesen und schreiben ab, und vom Datenvolumen, das zwischen Slots übergeben wird. Zur Optimierung der Leistung Ihrer Abfragen in BigQuery wenden Sie die Best Practices an, die in der folgenden Dokumentation beschrieben werden:

Materialisierte Ansichten effizient definieren und verwenden

Sie können materialisierte Ansichten verwenden, um die Leistung von Arbeitslasten zu verbessern, die allgemeine und wiederkehrende Abfragen verwenden. Die Anzahl der materialisierten Ansichten, die Sie erstellen können, ist begrenzt. Erstellen Sie nicht pro Variante einer Abfrage eine separate materialisierte Ansicht. Definieren Sie stattdessen materialisierte Ansichten, die Sie für mehrere Abfragemuster nutzen können.

JOIN-Performance verbessern

Sie können materialisierte Ansichten verwenden, um die Kosten und Latenz einer Abfrage zu reduzieren, die eine Aggregation zusätzlich zu einem JOIN durchführt. Stellen Sie sich einen Fall vor, in dem Sie eine große Faktentabelle mit einigen kleinen Dimensionstabellen verknüpfen und dann zusätzlich zum Join eine Aggregation anordnen. Sie sollten eventuell die Abfrage neu schreiben, um zuerst die Aggregation über der Faktentabelle mit Fremdschlüsseln als Gruppierungsschlüssel durchzuführen. Führen Sie dann das Ergebnis mit den Dimensionstabellen zusammen. Führen Sie abschließend eine Post-Aggregation durch.

Dataflow

Dieser Abschnitt enthält Empfehlungen zur Optimierung der Abfrageleistung Ihrer Dataflow-Pipelines.

Wenn Sie Pipelines erstellen und bereitstellen, können Sie Ausführungsparameter wie den Compute Engine-Maschinentyp konfigurieren, der für die Dataflow-Worker-VMs verwendet werden soll. Weitere Informationen finden Sie unter Pipelineoptionen.

Nachdem Sie Pipelines bereitgestellt haben, verwaltet Dataflow die Compute Engine- und Cloud Storage-Ressourcen, die zum Ausführen Ihrer Jobs erforderlich sind. Darüber hinaus helfen folgende Funktionen von Dataflow bei der Optimierung der Leistung der Pipelines:

Sie können die Leistung von Dataflow-Pipelines mit der webbasierten Monitoring-Oberfläche oder der Dataflow gcloud CLI überwachen.

Dataproc

In diesem Abschnitt werden Best Practices zur Optimierung der Leistung von Dataproc-Clustern beschrieben.

Cluster automatisch skalieren

Damit Ihre Dataproc-Cluster eine vorhersagbare Leistung liefern, können Sie Autoscaling aktivieren. Dataproc verwendet Hadoop YARN-Speichermesswerte und eine Autoscaling-Richtlinie, die Sie definieren, um die Anzahl der Worker-VMs in einem Cluster automatisch anzupassen. Weitere Informationen zur Verwendung und Konfiguration von Autoscaling finden Sie unter Cluster automatisch skalieren.

Geeigneten Speicher bereitstellen

Wählen Sie basierend auf Ihren Leistungs- und Kostenanforderungen eine geeignete Speicheroption für Ihren Dataproc-Cluster aus:

  • Verwenden Sie Cloud Storage, wenn Sie ein kostengünstiges Hadoop-kompatibles Dateisystem (Hadoop Compatible File System, HCFS) benötigen, aus dem Hadoop- und Spark-Jobs mit minimalen Änderungen lesen und schreiben können. Die in Cloud Storage gespeicherten Daten sind dauerhaft und können von anderen Dataproc-Clustern und anderen Produkten wie BigQuery aufgerufen werden.
  • Wenn Sie ein Hadoop Distributed File System (HDFS) mit niedriger Latenz für Ihren Dataproc-Cluster benötigen, verwenden Sie nichtflüchtigen, an den Worker-Knoten angehängten Compute Engine-Speicher. Die im HDFS-Speicher gespeicherten Daten sind flüchtig und die Speicherkosten sind höher als die der Cloud Storage-Option.
  • Sie können beide Speicheroptionen kombinieren, um den Leistungsvorteil der nichtflüchtigen Speicher von Compute Engine und die Kosten- und Langlebigkeitsvorteile von Cloud Storage zu kombinieren. Beispielsweise könnten Sie die Quell- und die endgültigen Datasets in Cloud Storage speichern und eine begrenzte HDFS-Kapazität für die Zwischen-Datasets bereitstellen. Beachten Sie die Empfehlungen im Abschnitt Nichtflüchtige Speicher und lokale SSDs, wenn Sie Größe und Typ der Laufwerke für HDFS-Speicher bestimmen.

Latenz bei der Verwendung von Cloud Storage verringern

Um die Latenz beim Zugriff auf in Cloud Storage gespeicherte Daten zu reduzieren, empfehlen wir Folgendes:

  • Erstellen Sie Ihren Cloud Storage-Bucket in der Region, in der auch ihr Dataproc-Cluster ist.
  • auto.purge für von Apache Hive verwaltete Tabellen deaktivieren, die in Cloud Storage gespeichert sind.
  • Wenn Sie Spark SQL verwenden, sollten Sie Dataproc-Cluster mit den neuesten Versionen der verfügbaren Images erstellen. Mit den neuesten Versionen können Sie Leistungsprobleme vermeiden, die in älteren Versionen auftreten können, z. B. eine langsame INSERT OVERWRITE-Leistung in Spark 2.x.
  • Wenn Sie die Möglichkeit minimieren möchten, viele Dateien mit unterschiedlichen oder kleinen Größen in Cloud Storage zu schreiben, können Sie die Spark SQL-Parameter spark.sql.shuffle.partitions und spark.default.parallelism oder den Hadoop-Parameter mapreduce.job.reduces konfigurieren.

Speicherlast und Kapazität überwachen und anpassen

Die nichtflüchtigen Speicher, die an die Worker-Knoten in einem Dataproc-Cluster angehängt sind, enthalten Shuffle-Daten. Um eine optimale Leistung zu erzielen, benötigen die Worker-Knoten ausreichend Speicherplatz. Wenn die Knoten nicht genügend Speicherplatz haben, werden sie im YARN NodeManager-Log als UNHEALTHY markiert. Wenn dieses Problem auftritt, erhöhen Sie entweder die Laufwerkgröße für die betroffenen Knoten oder führen weniger Jobs gleichzeitig aus.

EFM aktivieren

Wenn Worker-Knoten aus einem laufenden Dataproc-Cluster entfernt werden, z. B. aufgrund des Herunterskalierens oder des vorzeitigen Beendens, können Shuffle-Daten verloren gehen. Zur Minimierung von Jobverzögerungen in solchen Szenarien empfehlen wir die Aktivierung des Enhanced Flexibility Mode (EFM) für Cluster, die VMs auf Abruf nutzen oder nur die sekundäre Worker-Gruppe automatisch skalieren.

Nächste Schritte

Sehen Sie sich die Best Practices zur Optimierung der Leistung Ihrer Computing-, Speicher-, Netzwerk- und Datenbankressourcen an: