キャッシュを設定する
大事な
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 の使用
Azure ポータルにサインインします。
Azure portal の検索バーに「AKS クラスター上の HDInsight」と入力し、ドロップダウン リストから [AKS クラスター上の Azure HDInsight] を選択します。
リスト ページからクラスター名を選択します。
構成管理 ブレードに移動します。
config.properties -> カスタム構成に移動し、クリックして「追加」を行います。
必要なプロパティを設定し、[OK] クリックします。
設定を 保存します。
ARM テンプレートの使用
前提 条件
- AKS 上の HDInsight を使用した運用 Trino クラスター。
- ARM テンプレート をクラスター用に作成します。
- クラスター の完全な ARM テンプレート サンプルを確認します。
- 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 テンプレート デプロイする方法について説明します。