Partage via


Configurer la mise en cache

Important

Azure HDInsight sur AKS a été mis hors service le 31 janvier 2025. En savoir plus avec cette annonce.

Vous devez migrer vos charges de travail vers Microsoft Fabric ou un produit Azure équivalent pour éviter l’arrêt brusque de vos charges de travail.

Important

Cette fonctionnalité est actuellement en préversion. Les Conditions d’utilisation supplémentaires pour les préversions Microsoft Azure incluent des termes juridiques supplémentaires qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou qui ne sont pas encore publiées en disponibilité générale. Pour plus d’informations sur cette préversion spécifique, consultez informations sur Azure HDInsight sur AKS en préversion. Pour des questions ou des suggestions de fonctionnalités, envoyez une demande sur AskHDInsight avec les détails et suivez-nous pour plus de mises à jour sur Communauté Azure HDInsight.

L’interrogation du stockage d’objets à l’aide du connecteur Hive est un cas d’usage courant pour Trino. Ce processus implique souvent l’envoi de grandes quantités de données. Les objets sont récupérés par plusieurs travailleurs à partir de HDFS ou d’un autre magasin d’objets pris en charge et traités par ces travailleurs. Requêtes répétées avec des paramètres différents, voire des requêtes différentes provenant de différents utilisateurs, accèdent souvent aux mêmes objets et transfèrent les mêmes objets.

HDInsight sur AKS a ajouté fonctionnalité de mise en cache des résultats finals pour Trino, qui offre les avantages suivants :

  • Réduisez la charge sur le stockage d’objets.
  • Améliorez les performances de la requête.
  • Réduisez le coût de la requête.

Options de mise en cache

Différentes options de mise en cache :

  • mise en cache finale des résultats: lorsqu’elle est activée (dans la section configuration du composant coordinateur), résultat de toute requête pour les caches de catalogue sur une machine virtuelle coordinateur.
  • la mise en cache du catalogue Hive/Iceberg/Delta Lake: Lorsqu'elle est activée (pour un catalogue spécifique du type correspondant), les caches des données divisées pour chaque requête sont stockés dans le cluster sur les machines virtuelles de travail.

Mise en cache des résultats finals

La mise en cache finale des résultats peut être configurée de deux manières :

Les paramètres de configuration disponibles sont les suivants :

Propriété Par défaut Description
query.cache.enabled faux Active la mise en cache finale des résultats si la valeur est true.
query.cache.ttl - Définit une durée pendant laquelle les données du cache sont conservées avant l’éviction. Par exemple : « 10m », « 1h »
query.cache.disk-usage-percentage 80 Pourcentage d’espace disque utilisé pour les données mises en cache.
query.cache.max-result-data-size 0 Taille maximale des données pour un résultat. Si cette valeur est dépassée, le résultat n’est pas mis en cache.

Remarque

La mise en cache des résultats utilise le plan de requête et le TTL comme clé de cache.

La mise en cache finale des résultats peut également être contrôlée par le biais des paramètres de session suivants :

Paramètre de session Par défaut Description
query_cache_enabled Valeur de configuration d’origine Active/désactive la mise en cache finale des résultats pour une requête/session.
query_cache_ttl Valeur de configuration d’origine Définit la durée pendant laquelle les données du cache sont conservées avant l’éviction.
query_cache_max_result_data_size Valeur de configuration d’origine Taille maximale des données pour un résultat. Si cette valeur est dépassée, le résultat n’est pas mis en cache.
query_cache_forced_refresh faux Lorsqu’il est défini sur true, le résultat de l’exécution de la requête est forcé à être mis en cache, autrement dit, le résultat remplace les données déjà mises en cache si elles existent.

Note

Les paramètres de session peuvent être définis pour une session (par exemple, si Trino CLI est utilisé) ou être définis dans plusieurs instructions avant le texte de la requête. Par exemple

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;

La mise en cache finale des résultats produit métriques JMX qui peuvent être consultées à l'aide de Prometheus géré et Grafana. Les métriques suivantes sont disponibles :

Métrique Description
trino_cache_cachestats_requestcount Nombre total de requêtes passant par la couche de cache. Ce nombre n’inclut pas les requêtes exécutées avec le cache désactivé.
trino_cache_cachestats_hitcount Nombre d’accès au cache, c’est-à-dire le nombre de requêtes lorsque les données étaient disponibles et retournées à partir du cache.
trino_cache_cachestats_misscount Nombre d’absences de cache, c’est-à-dire le nombre de requêtes lorsque les données n’étaient pas disponibles et qu’elles devaient être mises en cache.
trino_cache_cachestats_hitrate Pourcentage de représentation des accès au cache par rapport au nombre total de requêtes.
trino_cache_cachestats_totalevictedcount Nombre de requêtes mises en cache supprimées du cache.
trino_cache_cachestats_totalbytesfromsource Nombre d’octets lus à partir de la source.
trino_cache_cachestats_totalbytesfromcache Nombre d’octets lus à partir du cache.
trino_cache_cachestats_totalcachedbytes Nombre total d’octets mis en cache.
trino_cache_cachestats_totalevictedbytes Nombre total d’octets supprimés.
trino_cache_cachestats_spaceused Taille actuelle du cache.
trino_cache_cachestats_cachereadfailures Nombre de fois où les données ne peuvent pas être lues à partir du cache en raison d’une erreur.
trino_cache_cachestats_cachewritefailures Nombre de fois où les données ne peuvent pas être écrites dans le cache en raison d’une erreur.

Utilisation du portail Azure

  1. Connectez-vous au portail Azure .

  2. Dans la barre de recherche du portail Azure, tapez « HDInsight sur le cluster AKS », puis sélectionnez « Azure HDInsight sur les clusters AKS » dans la liste déroulante.

    Capture d’écran montrant l’option de recherche pour la prise en main de HDInsight sur le cluster AKS.

  3. Sélectionnez le nom de votre cluster dans la page de liste.

    Capture d’écran montrant la sélection de HDInsight sur le cluster AKS dont vous avez besoin dans la liste.

  4. Accédez au volet Configuration Management.

    capture d’écran montrant la gestion de la configuration du portail Azure.

  5. Accédez à config.properties -> Configurations personnalisées, puis cliquez sur Ajouter.

    Capture d’écran montrant la configuration personnalisée.

  6. Définissez les propriétés requises, puis cliquez sur OK.

    Capture d’écran montrant les propriétés de configuration.

  7. Enregistrer la configuration.

    Capture d’écran montrant comment enregistrer la configuration.

Utilisation d’un modèle ARM

Conditions préalables

Vous devez définir les propriétés dans le composant coordinateur dans properties.clusterProfile.serviceConfigsProfiles section du modèle ARM. L’exemple suivant montre où ajouter les propriétés.

{
    "$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"
                                            }
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }

            }
        }
    ]
}

Mise en cache Hive/Iceberg/Delta Lake

Les trois connecteurs partagent le même ensemble de paramètres comme décrit dans Mise en cache Hive.

Note

Certains paramètres ne sont pas configurables et sont toujours définis sur leurs valeurs par défaut :
hive.cache.data-transfer-port=8898,
hive.cache.bookkeeper-port=8899,
hive.cache.location=/etc/trino/cache,
hive.cache.pourcentage-utilisation-disque=80

L’exemple suivant montre où ajouter les propriétés pour activer la mise en cache Hive à l’aide du modèle ARM.

{
    "$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"
                                            }
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }

            }
        }
    ]
}

Déployez le modèle ARM mis à jour pour refléter les modifications apportées à votre cluster. Découvrez comment déployer un modèle ARM.