キャッシュを構成する

重要

現在、この機能はプレビュー段階にあります。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用されるその他の法律条項については、「Microsoft Azure プレビューの追加の使用条件」に記載されています。 この特定のプレビューについては、Azure HDInsight on AKS のプレビュー情報に関する記事を参照してください。 質問や機能の提案については、詳細を記載した要求を AskHDInsight で送信してください。また、その他の更新情報については、Azure HDInsight コミュニティをフォローしてください。

Hive コネクタを使用したオブジェクト ストレージのクエリが、Trino の一般的なユース ケースです。 多くの場合、このプロセスでは大量のデータを送信する必要があります。 オブジェクトは、HDFS またはサポートされている別のオブジェクト ストアから複数のワーカーによって取得され、それらのワーカーによって処理されます。 パラメーターを変えて繰り返されるクエリ、または異なるユーザーからの別々のクエリであっても、多くの場合、同じオブジェクトにアクセスして転送します。

HDInsight on AKS では、Trino の最終結果キャッシュ機能が追加されました。この機能には、次の利点があります。

  • オブジェクト ストレージの負荷を軽減します。
  • クエリ パフォーマンスを改善します。
  • クエリ コストを削減します。

キャッシュ オプション

キャッシュには次のようなオプションがあります。

  • 最終結果キャッシュ: (コーディネーター コンポーネント構成セクションで) 有効にすると、カタログのクエリの結果が、コーディネーター VM 上にキャッシュされます。
  • Hive/Iceberg/Delta Lake カタログ キャッシュ: (対応する種類の特定のカタログに対して) 有効にすると、各クエリの分割データがワーカー VM 上のクラスター内にキャッシュされます。

最終結果キャッシュ

最終結果キャッシュは、次の 2 つの方法で構成できます。

選択可能な構成パラメーターは次のとおりです。

プロパティ Default 説明
query.cache.enabled false true の場合、最終結果キャッシュを有効にします。
query.cache.ttl - 削除前にキャッシュ データが保持されるまでの時間を定義します。 例えば、「10m」、「1h」などです。
query.cache.disk-usage-percentage 80 キャッシュされたデータに使用されるディスク領域の割合。
query.cache.max-result-data-size 0 結果の最大データ サイズ。 この値を超えた場合、結果はキャッシュされません。

Note

最終結果キャッシュでは、クエリ プランと ttl をキャッシュ キーとして使用します。

最終結果キャッシュは、次のセッション パラメーターを使用して制御することもできます。

セッション パラメーター 既定値 説明
query_cache_enabled 元の構成値 クエリ/セッションの最終結果キャッシュを有効または無効にします。
query_cache_ttl 元の構成値 削除前にキャッシュ データが保持されるまでの時間を定義します。
query_cache_max_result_data_size 元の構成値 結果の最大データ サイズ。 この値を超えた場合、結果はキャッシュされません。
query_cache_forced_refresh false true に設定すると、クエリ実行の結果が強制的にキャッシュされます。つまり、既存のキャッシュ データが存在する場合は、その結果が置き換わります。

Note

セッション パラメーターは、セッションに対して設定することも (Trino CLI を使用する場合など)、クエリ テキストの前に複数ステートメントで設定することもできます。 たとえば、 にします。

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;

最終結果キャッシュでは、JMX メトリックを生成し、マネージド Prometheus と Grafana を使用して表示できます。 次のメトリックを使用できます。

メトリック 説明
trino_cache_cachestats_requestcount キャッシュ レイヤーを通過したクエリの合計数。 この数には、キャッシュ オフで実行されたクエリは含まれていません。
trino_cache_cachestats_hitcount キャッシュ ヒット数 (データが利用可能でキャッシュから返されたクエリの数)。
trino_cache_cachestats_misscount キャッシュ ミス数 (データを利用できず、キャッシュする必要があるクエリの数)。
trino_cache_cachestats_hitrate クエリの合計数に対するキャッシュ ヒットの割合。
trino_cache_cachestats_totalevictedcount キャッシュから強制削除されたキャッシュ済みクエリ数。
trino_cache_cachestats_totalbytesfromsource ソースから読み取られたバイト数。
trino_cache_cachestats_totalbytesfromcache キャッシュから読み取られたバイト数。
trino_cache_cachestats_totalcachedbytes キャッシュされたバイト数の合計。
trino_cache_cachestats_totalevictedbytes 強制削除されたバイト数の合計。
trino_cache_cachestats_spaceused 現在のキャッシュのサイズ。
trino_cache_cachestats_cachereadfailures 何らかのエラーが発生してキャッシュからデータが読み取られなかった回数。
trino_cache_cachestats_cachewritefailures 何らかのエラーが発生してキャッシュにデータを書き込めなかった回数。

Azure portal を使用

  1. Azure ポータルにサインインします。

  2. Azure portal の検索バーに「HDInsight on AKS クラスター」と入力し、ドロップダウン リストから [Azure HDInsight on AKS クラスター] を選択します。

    HDInsight on AKS クラスターの使用を開始するための検索オプションを示すスクリーンショット。

  3. リスト ページからクラスター名を選択します。

    一覧から必要な HDInsight on AKS クラスターを選ぶ方法を示すスクリーンショット。

  4. [構成管理] ブレードに移動します。

    Azure portal の構成管理を示すスクリーンショット。

  5. config.properties -> [カスタム構成] に移動し、[追加] をクリックします。

    カスタム構成を示すスクリーンショット。

  6. 必要なプロパティを設定し、[OK] をクリックします。

    構成プロパティを示すスクリーンショット。

  7. 構成を保存します。

    構成を保存する方法を示すスクリーンショット。

ARM テンプレートの使用

前提条件

ARM テンプレートの properties.clusterProfile.serviceConfigsProfiles セクションで、コーディネーター コンポーネントのプロパティを定義する必要があります。 次の例では、プロパティを追加する場所を示します。

{
    "$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 キャッシュ

3 つのコネクタはすべて、Hive キャッシュに関するページで説明されているのと同じパラメーター セットを共有します。

Note

一部のパラメーターは構成できず、常に既定値に設定されます。
hive.cache.data-transfer-port=8898、
hive.cache.bookkeeper-port=8899、
hive.cache.location=/etc/trino/cache、
hive.cache.disk-usage-percentage=80

次の例では、ARM テンプレートを使用して Hive キャッシュを有効にするプロパティを追加する場所を示します。

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

            }
        }
    ]
}

更新した ARM テンプレートをデプロイして、クラスターに変更を反映させます。 ARM テンプレートをデプロイする方法を確認してください。