Redis HBO 提供者¶
Redis HBO 提供者支援載入自訂組態的 Redis 客戶端,以儲存和擷取基於歷史最佳化 (HBO) 的歷史統計資料。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 伺服器 URI 屬性 hbo.redis-provider.server_uri
來存取 Redis。根據您的自訂 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://127.0.0.1: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
中,建立檔案META-INF.services
並包含外掛程式進入類別com.facebook.presto.statistic.RedisProviderPlugin
。在
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。