キャッシュを構成する
重要
現在、この機能はプレビュー段階にあります。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない 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 を使用
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 テンプレートをデプロイする方法を確認してください。