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