Konfigurieren des Cachings

Hinweis

Azure HDInsight on AKS wird am 31. Januar 2025 eingestellt. Vor dem 31. Januar 2025 müssen Sie Ihre Workloads zu Microsoft Fabric oder einem gleichwertigen Azure-Produkt migrieren, um eine abruptes Beendigung Ihrer Workloads zu vermeiden. Die verbleibenden Cluster in Ihrem Abonnement werden beendet und vom Host entfernt.

Bis zum Einstellungsdatum ist nur grundlegende Unterstützung verfügbar.

Wichtig

Diese Funktion steht derzeit als Vorschau zur Verfügung. Die zusätzlichen Nutzungsbedingungen für Microsoft Azure-Vorschauen enthalten weitere rechtliche Bestimmungen, die für Azure-Features in Betaversionen, in Vorschauversionen oder anderen Versionen gelten, die noch nicht allgemein verfügbar gemacht wurden. Informationen zu dieser spezifischen Vorschau finden Sie unter Informationen zur Vorschau von Azure HDInsight on AKS. Bei Fragen oder Funktionsvorschlägen senden Sie eine Anfrage an AskHDInsight mit den entsprechenden Details, und folgen Sie uns für weitere Updates in der Azure HDInsight-Community.

Das Abfragen des Objektspeichers mithilfe des Hive-Connectors ist ein gängiger Anwendungsfall für Trino. Dieser Vorgang umfasst häufig das Senden großer Datenmengen. Objekte werden aus HDFS oder einem anderen unterstützten Objektspeicher von mehreren Workern abgerufen und von diesen verarbeitet. Wiederholte Abfragen mit unterschiedlichen Parametern oder sogar unterschiedliche Abfragen von verschiedenen Benutzer*innen, greifen häufig auf dieselben Objekte zu und übertragen sie.

In HDInsight on AKS wurde eine Funktion zum Zwischenspeichern der Endergebnisse für Trino hinzugefügt, die die folgenden Vorteile bietet:

  • Verringern der Auslastung des Objektspeichers
  • Verbessern der Abfrageleistung
  • Reduzieren der Abfragekosten

Optionen für die Zwischenspeicherung

Verschiedene Optionen für die Zwischenspeicherung:

  • Zwischenspeichern der Endergebnisse: Wenn diese Option aktiviert ist (im Abschnitt zur Konfiguration der Koordinatorkomponente), wird ein Ergebnis für alle Abfragen für alle Kataloge auf einer Koordinator-VM zwischengespeichert.
  • Zwischenspeichern von Hive-/Iceberg-/Delta Lake-Katalogen: Wenn diese Option (für einen bestimmten Katalog des entsprechenden Typs) aktiviert ist, werden geteilte Daten für jede Abfrage innerhalb des Clusters auf Worker-VMs zwischengespeichert.

Zwischenspeichern von Endergebnissen

Das Zwischenspeichern von Endergebnissen kann auf zwei Arten konfiguriert werden:

Die verfügbaren Konfigurationsparameter sind:

Eigenschaft Standard Beschreibung
query.cache.enabled false Bei „true“ wird das Zwischenspeichern von Endergebnissen aktiviert.
query.cache.ttl - Definiert einen Zeitpunkt, bis zu dem Cachedaten aufbewahrt werden, bevor sie entfernt werden. Beispiel: 10m, 1h
query.cache.disk-usage-percentage 80 Prozentsatz des Speicherplatzes, der für zwischengespeicherte Daten verwendet wird.
query.cache.max-result-data-size 0 Maximale Datengröße für ein Ergebnis. Wird dieser Wert überschritten, werden die Ergebnisse nicht zwischengespeichert.

Hinweis

Beim Zwischenspeichern von Endergebnissen werden ein Abfrageplan und TTL als Cacheschlüssel verwendet.

Das Zwischenspeichern von Endergebnissen kann auch über die folgenden Sitzungsparameter gesteuert werden:

Sitzungsparameter Standard Beschreibung
query_cache_enabled Ursprünglicher Konfigurationswert Aktiviert/deaktiviert die Zwischenspeicherung von Endergebnissen für eine Abfrage/Sitzung.
query_cache_ttl Ursprünglicher Konfigurationswert Definiert einen Zeitpunkt, bis zu dem Cachedaten aufbewahrt werden, bevor sie entfernt werden.
query_cache_max_result_data_size Ursprünglicher Konfigurationswert Maximale Datengröße für ein Ergebnis. Wird dieser Wert überschritten, werden die Ergebnisse nicht zwischengespeichert.
query_cache_forced_refresh false Wenn dieser Wert auf „true“ festgelegt ist, wird das Zwischenspeichern der Abfrageausführung erzwungen, das heißt, das Ergebnis ersetzt vorhandene zwischengespeicherte Daten, sofern vorhanden.

Hinweis

Sitzungsparameter können für eine Sitzung (z. B. bei Verwendung der Trino CLI) oder vor Abfragetext in mehreren Anweisungen festgelegt werden. Ein auf ein Objekt angewendeter

set session query_cache_enabled=true;
select cust.name, *
from tpch.tiny.orders 
join tpch.tiny.customer as cust on cust.custkey = orders.custkey
order by cust.name
limit 10;

Endergebniszwischenspeicherung erzeugt JMX-Metriken, die mithilfe von verwaltetem Prometheus und Grafana angezeigt werden können. Folgende Metriken sind verfügbar:

Metrik Beschreibung
trino_cache_cachestats_requestcount Die Gesamtanzahl der Abfragen, die die Cacheebene durchlaufen. Diese Zahl enthält keine Abfragen, die mit deaktiviertem Cache ausgeführt werden.
trino_cache_cachestats_hitcount Die Anzahl der Cachetreffer, d. h. die Anzahl der Abfragen, wenn Daten verfügbar und aus dem Cache zurückgegeben wurden.
trino_cache_cachestats_misscount Die Anzahl der Cachefehler, d. h. die Anzahl der Abfragen, wenn Daten nicht verfügbar waren und zwischengespeichert werden mussten.
trino_cache_cachestats_hitrate Prozentuale Darstellung von Cachetreffern in Relation zur Gesamtzahl der Abfragen.
trino_cache_cachestats_totalevictedcount Anzahl zwischengespeicherter Abfragen, die aus dem Cache entfernt wurden.
trino_cache_cachestats_totalbytesfromsource Anzahl der von der Quelle gelesenen Bytes.
trino_cache_cachestats_totalbytesfromcache Anzahl der vom Cache gelesenen Bytes.
trino_cache_cachestats_totalcachedbytes Gesamtanzahl zwischengespeicherter Bytes.
trino_cache_cachestats_totalevictedbytes Gesamtanzahl gelöschter Bytes.
trino_cache_cachestats_spaceused Aktuelle Größe des Caches.
trino_cache_cachestats_cachereadfailures Anzahl der Fälle, in denen Daten aufgrund eines Fehlers nicht aus dem Cache gelesen werden können.
trino_cache_cachestats_cachewritefailures Anzahl der Fälle, in denen Daten aufgrund eines Fehlers nicht in den Cache geschrieben werden können.

Über das Azure-Portal

  1. Melden Sie sich beim Azure-Portal an.

  2. Geben Sie in die Suchleiste des Azure-Portals den Suchbegriff „HDInsight on AKS-Cluster“ ein, und wählen Sie in der Dropdownliste „Azure HDInsight on AKS-Cluster“ aus.

    Screenshot: Suchoption für die ersten Schritte mit einem HDInsight on AKS-Cluster

  3. Wählen Sie auf der Seite mit der Liste den Namen Ihres Clusters aus.

    Screenshot: Auswählen des benötigten HDInsight on AKS-Clusters in der Liste.

  4. Navigieren Sie zum Blatt Konfigurationsverwaltung.

    Screenshot: Konfigurationsverwaltung im Azure-Portal.

  5. Wechseln Sie zu „config.properties“ > „Benutzerdefinierte Konfigurationen“, und klicken Sie dann auf Hinzufügen.

    Screenshot: benutzerdefinierte Konfiguration.

  6. Legen Sie die erforderlichen Eigenschaften fest, und klicken Sie auf OK.

    Screenshot: Konfigurationseigenschaften.

  7. Speichern Sie die Konfiguration.

    Screenshot: Speichern der Konfiguration.

Per ARM-Vorlage

Voraussetzungen

Sie müssen die Eigenschaften in der Koordinatorkomponente im Abschnitt properties.clusterProfile.serviceConfigsProfiles der ARM-Vorlage definieren. Im folgenden Beispiel wird veranschaulicht, wo die Eigenschaften hinzugefügt werden.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {},
    "resources": [
        {
            "type": "microsoft.hdinsight/clusterpools/clusters",
            "apiVersion": "<api-version>",
            "name": "<cluster-pool-name>/<cluster-name>",
            "location": "<region, e.g. westeurope>",
            "tags": {},
            "properties": {
                "clusterType": "Trino",

                "clusterProfile": {

                    "serviceConfigsProfiles": [
                        {
                            "serviceName": "trino",
                            "configs": [
                                {
                                    "component": "coordinator",
                                    "files": [
                                        {
                                            "fileName": "config.properties",
                                            "values": {
                                                "query.cache.enabled": "true",
                                                "query.cache.ttl": "10m"
                                            }
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }

            }
        }
    ]
}

Hive-/Iceberg-/Delta Lake-Zwischenspeicherung

Alle drei Connectors verwenden die gleichen Parameter, die auch unter Hive-Zwischenspeicherung beschrieben sind.

Hinweis

Bestimmte Parameter sind nicht konfigurierbar und werden immer auf ihre Standardwerte festgelegt:
hive.cache.data-transfer-port=8898
hive.cache.bookkeeper-port=8899
hive.cache.location=/etc/trino/cache
hive.cache.disk-usage-percentage=80

Im folgenden Beispiel wird veranschaulicht, wo die Eigenschaften zum Aktivieren der Hive-Zwischenspeicherung mithilfe der ARM-Vorlage hinzugefügt werden.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {},
    "resources": [
        {
            "type": "microsoft.hdinsight/clusterpools/clusters",
            "apiVersion": "<api-version>",
            "name": "<cluster-pool-name>/<cluster-name>",
            "location": "<region, e.g. westeurope>",
            "tags": {},
            "properties": {
                "clusterType": "Trino",

                "clusterProfile": {

                    "serviceConfigsProfiles": [
                        {
                            "serviceName": "trino",
                            "configs": [
                                {
                                    "component": "catalogs",
                                    "files": [
                                        {
                                            "fileName": "hive1.properties",
                                            "values": {
                                                "connector.name": "hive"
                                                "hive.cache.enabled": "true",
                                                "hive.cache.ttl": "5d"
                                            }
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }

            }
        }
    ]
}

Stellen Sie die aktualisierte ARM-Vorlage bereit, um die Änderungen in Ihrem Cluster widerzuspiegeln. Erfahren Sie, wie Sie eine ARM-Vorlage bereitstellen.