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 构建期间加载。
在
<fileSets>
中的presto-server/src/main/assembly/presto.xml
中添加以下内容以注册插件<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
中,使用插件条目类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。