Partager via


Configurer la mise en cache

Important

Cette fonctionnalité est disponible actuellement en mode Aperçu. Les Conditions d’utilisation supplémentaires pour les préversions de Microsoft Azure contiennent davantage de conditions légales qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou ne se trouvant pas encore en disponibilité générale. Pour plus d’informations sur cette préversion spécifique, consultez les Informations sur la préversion d’Azure HDInsight sur AKS. Pour toute question ou pour des suggestions à propos des fonctionnalités, veuillez envoyer vos requêtes et leurs détails sur AskHDInsight, et suivez-nous sur la Communauté Azure HDInsight pour plus de mises à jour.

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

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

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

Options de mise en cache

Différentes options de mise en cache :

  • Mise en cache du résultat final : Lorsqu'il est activé (dans la section de configuration du composant coordinateur), un résultat pour toute requête pour n'importe quel catalogue mis en cache sur une VM coordinatrice.
  • Mise en cache du catalogue Hive/Iceberg/Delta Lake : Lorsqu'elle est activée (pour un catalogue spécifique du type correspondant), une répartition des données pour chaque requête est mise en cache au sein du cluster sur les machines virtuelles de travail.

Mise en cache du résultat final

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

Les paramètres de configuration disponibles sont :

Propriété Default Description
query.cache.enabled false Active la mise en cache du résultat final si vrai.
query.cache.ttl - Définit une durée pendant laquelle les données du cache sont conservées avant l'expulsion. Par exemple : "10min", "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 finaux utilise le plan de requête et ttl comme clé de cache.

La mise en cache des résultats finaux peut également être contrôlée via les paramètres de session suivants :

Paramètre de session Default Description
query_cache_enabled Modifier la configuration d’origine Active/désactive la mise en cache du résultat final pour une requête/session.
query_cache_ttl Modifier la configuration d’origine Définit une durée pendant laquelle les données du cache sont conservées avant l'expulsion.
query_cache_max_result_data_size Modifier la 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 false Lorsqu'il est défini sur true, force le résultat de l'exécution de la requête à être mis en cache, c'est-à-dire que le résultat remplace les données mises en cache existantes si elles existent).

Remarque

Les paramètres de session peuvent être définis pour une session (par exemple, si Trino CLI est utilisé) ou peuvent ê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 des métriques JMX qui peuvent être consultées avec Managed Prometheus et Grafana. Les mesures 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 lus mis en cache.
trino_cache_cachestats_totalevictedbytes Nombre total d’octets lus rejeté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.

Avec le portail Azure

  1. Connectez-vous au portail Azure.

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

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

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

    Capture d’écran montrant la sélection dans la liste du Cluster HDInsight sur AKS dont vous avez besoin.

  4. Accédez au panneau Gestion des configurations.

    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. Enregistrez la configuration.

    Capture d’écran montrant comment enregistrer la configuration.

Utilisation d’un modèle ARM

Prérequis

Vous devez définir les propriétés du composant coordinateur dans la section properties.clusterProfile.serviceConfigsProfiles 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.

Remarque

Certains paramètres ne sont pas configurables et 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.disk-usage-percentage=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.