次の方法で共有


キャッシュを構成する

Note

Azure HDInsight on AKS は 2025 年 1 月 31 日に廃止されます。 2025 年 1 月 31 日より前に、ワークロードを Microsoft Fabric または同等の Azure 製品に移行することで、ワークロードの突然の終了を回避する必要があります。 サブスクリプション上に残っているクラスターは停止され、ホストから削除されることになります。

提供終了日までは基本サポートのみが利用できます。

重要

現在、この機能はプレビュー段階にあります。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用されるその他の法律条項については、「Microsoft Azure プレビューの追加の使用条件」に記載されています。 この特定のプレビューについては、「Microsoft 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 テンプレートをデプロイする方法を確認してください。