Configurer la mise en cache
Remarque
Nous allons mettre hors service Azure HDInsight sur AKS le 31 janvier 2025. Avant le 31 janvier 2025, vous devrez migrer vos charges de travail vers Microsoft Fabric ou un produit Azure équivalent afin d’éviter leur arrêt brutal. Les clusters restants de votre abonnement seront arrêtés et supprimés de l’hôte.
Seul le support de base sera disponible jusqu’à la date de mise hors service.
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
Connectez-vous au portail Azure.
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.
Sélectionnez le nom de votre cluster sur la page de liste.
Accédez au panneau Gestion des configurations.
Accédez à config.properties –> Configurations personnalisées, puis cliquez sur Ajouter.
Définissez les propriétés requises, puis cliquez sur OK.
Enregistrez la configuration.
Utilisation d’un modèle ARM
Prérequis
- Un cluster Trino avec HDInsight sur AKS opérationnel.
- Créez un modèle ARM pour votre cluster.
- Examinez l’exemple complet de modèle ARM de cluster.
- Connaissance de la création et du déploiement de modèles ARM.
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.