Redis HBO プロバイダー¶
Redis HBO プロバイダーは、履歴ベースの最適化 (HBO) の履歴統計を格納および取得するためのカスタム構成された Redis クライアントのロードをサポートします。Redis クライアントはステートフルであり、Lettuceに基づいています。RedisClient と RedisClusterClient の両方がサポートされており、RedisClusterAsyncCommandsFactory は、カスタム構成のためにユーザーが拡張することを意図しています。
構成¶
etc/catalog/redis-provider.properties
を作成して、Redis HBO プロバイダープラグインをマウントします。
構成プロパティを適宜編集します。
構成プロパティ¶
次の構成プロパティを etc/catalog/redis-provider.properties
で使用できます。
プロパティ名 |
説明 |
---|---|
|
Presto サーバーがコーディネーターであるかどうかを示すブール値プロパティ |
|
Redis サーバー URI |
|
Redis フェッチリクエストの最大タイムアウト (ミリ秒単位) |
|
Redis セットリクエストの最大タイムアウト (ミリ秒単位) |
|
格納する Redis データの TTL (秒単位) |
|
このプラグインが本番環境で有効になっているかどうかを示すブール値プロパティ |
|
Redis 資格情報のパス |
|
クラスターモードが有効になっているかどうかを示すブール値プロパティ |
履歴ベースの最適化のためのコーディネーター構成¶
これらのプロパティは、プランニングで履歴統計を追跡および使用するために、Presto コーディネーターの etc/config.properties
で構成する必要があります。
プロパティ名 |
説明 |
デフォルト値 |
---|---|---|
|
履歴プラン統計の使用を有効にするブール値プロパティ |
false |
|
履歴プラン統計の追跡を有効にするブール値プロパティ |
false |
|
正規プラン内のノード数がこの制限内にある場合にのみ、履歴ベースの最適化を使用する整数値 |
1000 |
|
プランハッシュと統計収集におけるオプティマイザーのエンドツーエンドタイムアウトの期間 |
10 (秒) |
資格情報¶
プラグインは、Redis にアクセスするために Redis サーバー URI プロパティ hbo.redis-provider.server_uri
を必要とします。カスタム Redis デプロイメントによっては、追加の資格情報を追加する必要がある場合があります。
ローカルテストの設定¶
Redis ドキュメントに従ってローカル Redis クラスターをセットアップして、Redis クラスターを作成します。
presto-main/etc/config.properties
で、../redis-hbo-provider/pom.xml,\
をplugin.bundles
に追加します。presto-main/etc/
に、これらのサンプルプロパティを使用してファイルredis-provider.properties
を作成します。coordinator=true hbo.redis-provider.enabled=true hbo.redis-provider.total-fetch-timeoutms=5000 hbo.redis-provider.total-set-timeoutms=5000 hbo.redis-provider.default-ttl-seconds=4320000 hbo.redis-provider.cluster-mode-enabled=true hbo.redis-provider.server_uri=redis://localhost:7001/
本番環境の設定¶
プラグイン JAR を本番環境の plugins
ディレクトリに配置できます。
または、次の方法に従って、Presto ビルド中にプラグインがロードされるようにします。
presto-server/src/main/assembly/presto.xml
の<fileSets>
にプラグインを登録するために、以下を追加します。<fileSet> <directory>${project.build.directory}/dependency/redis-hbo-provider-${project.version}</directory> <outputDirectory>plugin/redis-hbo-provider</outputDirectory> </fileSet>
redis-hbo-provider/src/main/resources
に、Plugin エントリクラスcom.facebook.presto.statistic.RedisProviderPlugin
を持つファイルMETA-INF.services
を作成します。presto-server/pom.xml
で、モジュールへの依存関係を追加します。<dependency> <groupId>com.facebook.presto</groupId> <artifactId>redis-hbo-provider</artifactId> <version>${project.version}</version> <type>zip</type> <scope>provided</scope> </dependency>
(オプション)
com.facebook.presto.statistic.RedisClusterAsyncCommandsFactory
にカスタム Redis クライアント接続ログインを追加します。注: AsyncCommands は適切に提供する必要があります。