次の方法で共有


キャッシュを設定する

大事な

AKS 上の Azure HDInsight は、2025 年 1 月 31 日に廃止されました。 このお知らせ を通してについて詳しく知ってください。

ワークロードの突然の終了を回避するには、ワークロードを Microsoft Fabric または同等の Azure 製品 に移行する必要があります。

大事な

この機能は現在プレビュー段階です。 Microsoft Azure プレビューの 追加使用条件 には、ベータ版、プレビュー版、または一般公開されていない Azure 機能に適用される、より多くの法的条件が含まれています。 この特定のプレビューの詳細については、AKS プレビュー情報 Azure HDInsightを参照してください。 ご質問や機能の提案については、AskHDInsight に詳細を記載した要求を送信し、Azure HDInsight Communityをフォローして、さらなる更新情報を入手してください。

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

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

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

キャッシュ オプション

キャッシュのさまざまなオプション:

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

最終的な結果のキャッシュ

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

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

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

手記

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

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

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

手記

セッション パラメーターは、セッションに対して設定することも (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 メトリック が生成されます。これは、Managed 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 の検索バーに「AKS クラスター上の HDInsight」と入力し、ドロップダウン リストから [AKS クラスター上の Azure HDInsight] を選択します。

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

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

    一覧から必要な AKS クラスター上の HDInsight の選択を示すスクリーンショット。

  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 キャッシングと同じパラメーターセットを共有しています。

手記

特定のパラメーターは構成可能ではなく、常に既定値に設定されます。
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 テンプレート デプロイする方法について説明します。