Konfigurace ukládání do mezipaměti

Důležité

Tato funkce je aktuálně dostupná jako ukázková verze. Doplňkové podmínky použití pro Microsoft Azure Preview obsahují další právní podmínky, které se vztahují na funkce Azure, které jsou v beta verzi, ve verzi Preview nebo ještě nejsou vydány v obecné dostupnosti. Informace o této konkrétní verzi Preview najdete v tématu Azure HDInsight o službě AKS ve verzi Preview. Pokud máte dotazy nebo návrhy funkcí, odešlete prosím žádost na AskHDInsight s podrobnostmi a sledujte nás o dalších aktualizacích v komunitě Azure HDInsight.

Dotazování na úložiště objektů pomocí konektoru Hive je běžným případem použití pro Trino. Tento proces často zahrnuje odesílání velkých objemů dat. Objekty se načítají z HDFS nebo jiného podporovaného úložiště objektů více pracovních procesů a zpracovávají se těmito pracovními procesy. Opakované dotazy s různými parametry nebo dokonce různé dotazy od různých uživatelů často přistupují ke stejným objektům a přenášejí je.

Služba HDInsight v AKS přidala funkci ukládání konečných výsledků do mezipaměti pro Trino, která poskytuje následující výhody:

  • Snižte zatížení úložiště objektů.
  • Zlepšení výkonu dotazů.
  • Snižte náklady na dotazy.

možnosti Ukládání do mezipaměti

Různé možnosti ukládání do mezipaměti:

  • Ukládání konečných výsledků do mezipaměti: Pokud je povoleno (v části konfigurace koordinačních komponent), výsledek pro všechny dotazy na všechny mezipaměti katalogu na koordinačním virtuálním počítači.
  • Ukládání do mezipaměti katalogu Hive/ Iceberg/Delta Lake: Pokud je povoleno (pro konkrétní katalog odpovídajícího typu), rozdělte data pro každou mezipaměť dotazů v clusteru na pracovních virtuálních počítačích.

Ukládání konečných výsledků do mezipaměti

Ukládání konečných výsledků do mezipaměti je možné nakonfigurovat dvěma způsoby:

Dostupné parametry konfigurace jsou:

Vlastnost Výchozí Popis
query.cache.enabled false (nepravda) Povolí ukládání konečných výsledků do mezipaměti, pokud je true.
query.cache.ttl - Definuje čas, kdy se data mezipaměti uchovávají před vyřazením. Příklad: "10m","1h"
query.cache.disk-usage-percentage 80 Procento místa na disku použitého pro data uložená v mezipaměti
query.cache.max-result-data-size 0 Maximální velikost dat pro výsledek Pokud tato hodnota překročíte, výsledek se neupamí.

Poznámka:

Ukládání konečných výsledků do mezipaměti používá plán dotazu a hodnotu ttl jako klíč mezipaměti.

Ukládání konečných výsledků do mezipaměti lze také řídit pomocí následujících parametrů relace:

Parametr relace Výchozí Popis
query_cache_enabled Původní hodnota konfigurace Povolí nebo zakáže ukládání konečných výsledků do mezipaměti pro dotaz nebo relaci.
query_cache_ttl Původní hodnota konfigurace Definuje čas, kdy se data mezipaměti uchovávají před vyřazením.
query_cache_max_result_data_size Původní hodnota konfigurace Maximální velikost dat pro výsledek Pokud tato hodnota překročíte, výsledek se neupamí.
query_cache_forced_refresh false (nepravda) Pokud je nastavená hodnota true, vynutí výsledek spuštění dotazu do mezipaměti, tedy nahradí existující data uložená v mezipaměti, pokud existuje).

Poznámka:

Parametry relace je možné nastavit pro relaci (například pokud se používá rozhraní příkazového řádku Trino) nebo lze nastavit ve více příkazech před textem dotazu. Příklad:

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;

Ukládání konečných výsledků do mezipaměti vytváří metrikyJMX, které je možné zobrazit pomocí spravovaného nástroje Prometheus a Grafany. K dispozici jsou následující metriky:

Metrický Popis
trino_cache_cachestats_requestcount Celkový počet dotazů procházejících vrstvou mezipaměti Toto číslo nezahrnuje dotazy spuštěné s vypnutou mezipamětí.
trino_cache_cachestats_hitcount Početpřístupch
trino_cache_cachestats_misscount Počet zmeškaných mezipamětí, tj. počet dotazů, když data nebyla dostupná a musela být uložena do mezipaměti.
trino_cache_cachestats_hitrate Procento znázornění přístupů do mezipaměti s celkovým počtem dotazů
trino_cache_cachestats_totalevictedcount Počet dotazů uložených v mezipaměti vyřazených z mezipaměti
trino_cache_cachestats_totalbytesfromsource Počet bajtů přečtených ze zdroje
trino_cache_cachestats_totalbytesfromcache Počet bajtů načtených z mezipaměti
trino_cache_cachestats_totalcachedbytes Celkový počet bajtů uložených v mezipaměti
trino_cache_cachestats_totalevictedbytes Celkový počet vyřazených bajtů
trino_cache_cachestats_spaceused Aktuální velikost mezipaměti.
trino_cache_cachestats_cachereadfailures Kolikrát se data nedají číst z mezipaměti kvůli žádné chybě.
trino_cache_cachestats_cachewritefailures Počet, kdy se data nedají zapsat do mezipaměti kvůli žádné chybě

Pomocí webu Azure Portal

  1. Přihlaste se na portál Azure.

  2. Na panelu hledání na webu Azure Portal zadejte "HDInsight v clusteru AKS" a v rozevíracím seznamu vyberte Azure HDInsight v clusterech AKS.

    Snímek obrazovky s možností hledání pro zahájení práce se službou HDInsight v clusteru AKS

  3. Na stránce seznamu vyberte název clusteru.

    Snímek obrazovky znázorňující výběr HDInsightu v clusteru AKS, který požadujete ze seznamu

  4. Přejděte do okna Správa konfigurace.

    Snímek obrazovky znázorňující správu konfigurace na webu Azure Portal

  5. Přejděte na config.properties –> Vlastní konfigurace a klikněte na tlačítko Přidat.

    Snímek obrazovky znázorňující vlastní konfiguraci

  6. Nastavte požadované vlastnosti a klepněte na tlačítko OK.

    Snímek obrazovky znázorňující vlastnosti konfigurace

  7. Uložte konfiguraci.

    Snímek obrazovky znázorňující, jak konfiguraci uložit

Použití šablony Resource Manageru

Požadavky

V šabloně ARM je potřeba definovat vlastnosti v koordinátorové komponentě properties.clusterProfile.serviceConfigsProfiles . Následující příklad ukazuje, kam přidat vlastnosti.

{
    "$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 – ukládání do mezipaměti

Všechny tři konektory sdílejí stejnou sadu parametrů, jak je popsáno v ukládání do mezipaměti Hive .

Poznámka:

Některé parametry nejsou konfigurovatelné a vždy se nastavují na výchozí hodnoty:
hive.cache.data-transfer-port=8898,
hive.cache.bookkeeper-port=8899,
hive.cache.location=/etc/trino/cache,
hive.cache.disk-usage-percentage=80

Následující příklad ukazuje, kde přidat vlastnosti pro povolení ukládání Hive do mezipaměti pomocí šablony 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"
                                            }
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }

            }
        }
    ]
}

Nasaďte aktualizovanou šablonu ARM tak, aby odrážela změny v clusteru. Zjistěte, jak nasadit šablonu ARM.