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
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.
Sélectionnez le nom de votre cluster dans la page de liste.
Accédez au volet Configuration Management.
capture d’écran
Accédez à config.properties -> Configurations personnalisées, puis cliquez sur Ajouter.
Définissez les propriétés requises, puis cliquez sur OK.
Enregistrer la configuration.
Utilisation d’un modèle ARM
Conditions préalables
- Un cluster Trino opérationnel avec HDInsight sur AKS.
- Créez template ARM pour votre cluster.
- Passez en revue l'exemple de modèle ARM complet pour le cluster .
- Familiarité avec création et le déploiement de modèles ARM.
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.