Freigeben über


Intelligenter Cache in Azure Synapse Analytics

Der intelligente Cache funktioniert nahtlos hinter den Kulissen und übernimmt die Zwischenspeicherung von Daten, um die Ausführung von Spark zu beschleunigen, wenn es aus Ihrem ADLS Gen2-Data Lake liest. Außerdem werden Änderungen an den zugrunde liegenden Dateien automatisch erkannt und die Dateien im Cache automatisch aktualisiert, wodurch Ihnen stets die neuesten Daten zur Verfügung stehen. Wenn der Cache seinen Größengrenzwert erreicht, werden die zuletzt gelesenen Daten automaisch freigegeben, um Platz für aktuellere Daten zu schaffen. Durch dieses Feature verringern sich die Gesamtbetriebskosten, indem die Leistung bei aufeinander folgenden Lesevorgängen der im verfügbaren Cache gespeicherten Dateien um bis zu 65 % für Parquet-Dateien und um bis zu 50 % für CSV-Dateien verbessert wird.

Beim Abfragen einer Datei oder Tabelle aus Ihrem Data Lake führt das Apache Spark-Modul in Synapse einen Aufruf des ADLS Gen2-Remotespeichers aus, um die zugrunde liegenden Dateien zu lesen. Bei jeder Abfrageanforderung zum Lesen derselben Daten muss das Spark-Modul einen Aufruf an den ADLS Gen2-Remotespeicher vornehmen. Durch diesen redundanten Prozess verlängert sich die Gesamtverarbeitungszeit um weitere Wartezeit. Spark bietet ein Cachefeature, bei dem Sie den Cache manuell festlegen und freigeben müssen, um die Latenz zu minimieren und die Gesamtleistung zu verbessern. Dies kann jedoch dazu führen, dass Ergebnisse veraltete Daten aufweisen, wenn sich die zugrunde liegenden Daten ändern.

Der intelligente Cache von Synapse vereinfacht diesen Prozess, indem die einzelnen Lesevorgänge im zugewiesenen Cachespeicherbereich auf jedem Spark-Knoten automatisch zwischengespeichert werden. Bei jeder Anforderung einer Datei wird geprüft, ob die Datei im Cache vorhanden ist, und das Tag aus dem Remotespeicher verglichen, um festzustellen, ob die Datei veraltet ist. Wenn die Datei nicht vorhanden oder veraltet ist, liest Spark die Datei und speichert sie im Cache. Wenn der Cache voll wird, wird die Datei mit der ältesten letzten Zugriffszeit aus dem Cache entfernt, um Platz für aktuellere Dateien zu schaffen.

Der Synapse-Cache besteht aus einem einzelnen Cache pro Knoten. Wenn Sie einen mittelgroßen Knoten verwenden und auf dem einzelnen mittelgroßen Knoten zwei kleine Executors betreiben, teilen sich die beiden Executors den gleichen Cache.

Aktivieren oder Deaktivieren des Caches

Die Cachegröße kann ausgehend vom Prozentsatz der gesamten Datenträgergröße angepasst werden, die für die einzelnen Apache Spark-Pools zur Verfügung steht. Standardmäßig ist der Cache deaktiviert, aber es ist lediglich erforderlich, den Schieberegler von 0 (deaktiviert) auf den gewünschten Prozentsatz für die Cachegröße zu verschieben, um ihn zu aktivieren. Wir reservieren ein Minimum von 20 % des verfügbaren Speicherplatzes für die Umlagerung von Daten. Für Workloads mit viel Datenbewegungen kann die Cachegröße minimiert oder der Cache deaktiviert werden. Wir empfehlen, mit einer Cachegröße von 50 % zu beginnen und die Größe nach Bedarf anzupassen. Wenn Ihre Arbeitslast viel Speicherplatz auf der lokalen SSD für Umlagerung oder RDD-Zwischenspeicherung benötigt, ziehen Sie unbedingt eine Herabsetzung der Cachegröße in Erwägung, um das Risiko eines Ausfalls aufgrund von unzureichendem Speicherplatz zu verringern. Die tatsächliche Größe des verfügbaren Speichers und die Cachegröße auf jedem Knoten hängen von der Knotenfamilie und der Knotengröße ab.

Aktivieren des Caches für neue Spark-Pools

Suchen Sie beim Erstellen eines neuen Spark-Pools auf der Registerkarte Additional Settings (Weitere Einstellungen) nach dem Intelligent Cache-Schieberegler, den Sie auf die gewünschte Größe verschieben können, um das Feature zu aktivieren.

How to enable Intelligent Cache during new Spark pools creation

Aktivieren/Deaktivieren des Caches für vorhandene Spark-Pools

Gehen Sie bei vorhandenen Spark-Pools wie folgt vor: Navigieren Sie zu den Skalierungseinstellungen des gewünschten Apache Spark-Pools, um den Cache durch Bewegen des Schiebereglers auf einen größeren Wert als 0 zu aktivieren oder ihn durch Bewegen des Schiebereglers auf 0 zu deaktivieren.

How to enable or disable Intelligent Cache for existing Spark pools

Ändern der Cachegröße für vorhandene Spark-Pools

Um die Größe des intelligenten Caches für einen Pool zu ändern, müssen Sie einen Neustart erzwingen, wenn der Pool aktive Sitzungen hat. Wenn der Spark-Pool eine aktive Sitzung hat, zeigt er Neue Einstellungen erzwingen an. Klicken Sie auf das Kontrollkästchen, und wählen Sie Übernehmen aus, um die Sitzung automatisch neu zu starten.

Force restarting a session after changing Intelligent Cache setting

Aktivieren und Deaktivieren des Caches innerhalb der Sitzung

Sie können den intelligenten Cache in einer Sitzung ganz einfach deaktivieren, indem Sie den folgenden Code in Ihrem Notebook ausführen:

   %spark 

   spark.conf.set("spark.synapse.vegas.useCache", "false") 
   %pyspark 

   spark.conf.set('spark.synapse.vegas.useCache', 'false') 

Und ihn aktivieren, indem Sie dies ausführen:

   %spark 

   spark.conf.set("spark.synapse.vegas.useCache", "true") 
   %pyspark 

   spark.conf.set('spark.synapse.vegas.useCache', 'true') 

Wann soll der intelligente Cache verwendet werden und wann nicht?

Sie profitieren von diesem Feature, wenn:

  • Ihre Workload erfordert das mehrmalige Lesen derselben Datei, und die Dateigröße passt in den Cache.

  • Ihre Workload verwendet Deltatabellen, Parquet-Dateiformate und CSV-Dateien.

  • Sie verwenden Apache Spark 3 oder höher in Azure Synapse.

Dieses Feature bringt Ihnen keinen Vorteil, wenn:

  • Sie lesen eine Datei, die die Cachegröße überschreitet. In diesem Fall könnte der Anfang der Datei entfernt werden, und nachfolgende Abfragen müssen die Daten erneut aus dem Remotespeicher abrufen. In diesem Fall genießen Sie keine Vorteile des intelligenten Caches. Es kann sinnvoll sein, die Cachegröße und/oder die Knotengröße heraufzusetzen.

  • Ihre Workload erfordert Umlagerung von Daten in großem Maßstab. Dann wird durch das Deaktivieren des intelligenten Caches verfügbarer Speicherplatz freigegeben, um ein Fehlschlagen Ihres Auftrags aufgrund von unzureichendem Speicherplatz zu verhindern.

  • Sie verwenden einen Spark 3.1-Pool. Sie müssen Ihren Pool auf die neueste Version von Spark aktualisieren.

Weitere Informationen

Weitere Informationen zu Apache Spark finden Sie in den folgenden Artikeln:

Informationen zum Konfigurieren der Spark-Sitzungseinstellungen

Nächste Schritte

Ein Apache Spark-Pool bietet Open-Source-Big Data-Computefunktionen, mit denen Daten geladen, modelliert, verarbeitet und für einen schnelleren analytischen Einblick bereitgestellt werden können. Weitere Informationen zum Erstellen eines Pools für die Ausführung Ihrer Spark-Workloads finden Sie in den folgenden Tutorials: