ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Presto Release 0.129 技术解读:P4HyperLogLog 类型、网络拓扑感知调度与 S3 加密增强

Presto Release 0.129 技术解读:P4HyperLogLog 类型、网络拓扑感知调度与 S3 加密增强 大数据数据库后端【免费下载链接】prestoThe official home of the Presto distributed SQL query engine for big data项目地址https://gitcode.com/gh_mirrors/pre/presto点击查看免费下载本文是 Presto 开源版本 0.129 发布说明release-0.129.rst的深度技术解读覆盖该版本在查询引擎、JDBC 驱动、CLI、调度器与 Hive 连接器上的全部功能变更并结合当前仓库源码如NodeSchedulerConfig、NetworkTopology、HiveS3Config等剖析其底层实现原理。读完本文你将掌握 P4HyperLogLog 的适用场景、node-scheduler.network-topology的配置语义、S3 服务端加密与区域固定选项的正确用法以及 JDBC 驱动非查询语句支持的具体能力边界。版本总览与已知问题Release 0.129 是一次功能型迭代版本主要亮点包括引入全新的P4HyperLogLog数据类型在基数估计场景中以少量精度换性能调度器支持网络拓扑感知的 split 调度node-scheduler.network-topologyHive 连接器新增 S3 服务端加密、EC2 区域固定与retention_days表属性支持JDBC 驱动补全非查询语句DDL/DML的执行支持。⚠️ 已知性能回退务必先读该版本存在一处已知性能回退当GROUP BY或JOIN查询的 key 长度介于16 到 31 字节时性能会明显下降。此问题已在 Release 0.130release-0.130.rst中修复。升级建议若生产环境大量使用 1631 字节的字符串作为分组或关联键如部分 UUID 短格式、定长业务编码建议关注此区间查询性能必要时直接评估升级到包含修复的后续版本。General Changes查询引擎与优化器变更本节逐一解读该版本通用引擎核心部分的变更每条均对应一个可验证的行为差异。OUTER JOIN 规划器修复修复了一个可能导致OUTER JOINLEFT/RIGHT/FULL 外连接查询返回错误结果的 planner 问题。这类 bug 通常源于 join 谓词与过滤条件下推时的等价性判断错误影响面涉及正确性而非性能属于必须升级修复的类别。若你在此前的版本中遇到过外连接结果与预期不一致、且 SQL 本身逻辑无误的案例可以重点回归验证。max_by / min_by 内存统计更真实使用max_by/min_by聚合函数的查询现在能更准确地反映真实内存使用量。这意味着从该版本起这类查询在监控中显示的内存用量会变大属于统计口径修正而非真实泄漏。原因是此前这两个函数在计算过程中保留的辅助状态未被完整计入用户内存统计导致基于内存阈值如查询内存上限的评估失真。SHOW SESSION 隐藏属性过滤修复了 SHOW SESSION 会展示隐藏hidden会话属性的问题。隐藏属性通常用于内部或实验性参数不应对用户暴露此修复使会话属性列表更干净、更安全。ORDER BY LIMIT 大查询挂起修复修复了大型查询在ORDER BY与LIMIT组合下可能发生的挂起hang。该问题一般出现在排序算子与 top-N 算子配合时下游无法感知上游完成状态导致管道阻塞。此修复对取全量数据排序后仅保留前 N 行这类常见报表查询的稳定性有直接意义。空数组 / 全 NULL 数组的强制转换修复修复了将空数组或仅含NULL的数组强制转换为其他类型时的问题。此前CAST(ARRAY[] AS ARRAYINTEGER)一类操作可能产生未定义行为或报错修复后空数组与全 NULL 数组的类型转换行为符合预期。表属性名大小写不敏感表属性名table property names现在被正确视为大小写不敏感。此前 Hive 等连接器的表属性如formatvsFORMAT匹配可能受大小写影响现在统一按不区分大小写处理提升了配置容错性。其他引擎级改进查询详情页 UI 优化coordinator 的 Web UI 查询详情页面有小幅改进Verifier 异常栈精简verifier 对预期中的异常不再打印无用的堆栈信息降低日志噪声UNION ALL 写入性能提升涉及UNION ALL且需要写出数据的查询性能得到改善。新增 P4HyperLogLog 类型该版本引入了P4HyperLogLog数据类型它基于 HyperLogLog 基数估计数据结构核心 trade-off 是在处理较小集合时以少量精度与内存开销换取显著的性能提升。P4P 代表参数化/优化的 HLL 实现变体实现在小基数场景下优化了稀疏表示的读写路径。从当前仓库的架构看Presto 的近似去重函数族如approx_distinct与 HLL 相关类型均由引擎内部的统计数据结构支撑P4HyperLogLog适合追求更高吞吐、且对极小误差不敏感的高基数去重统计场景如流量 UV 统计、去重计数仪表盘。如果你使用 Presto 做大规模去重统计可在该版本起关注此类型在查询中的实际表现并对比原有 HLL 类型的精度-性能曲线。JDBC Driver 变更Release 0.129 对 JDBC 驱动做了两项行为层面的大改动直接影响下游应用代码的兼容性。SET / RESET SESSION 由静默忽略改为抛异常此前驱动对SET SESSION/RESET SESSION参见 SET SESSION 与 RESET SESSION会静默忽略导致应用误以为设置会话属性成功。从该版本起驱动改为抛出异常明确告知调用方该操作不被支持。兼容性提醒如果你的应用此前通过 JDBC 发送SET SESSION且依赖静默通过的行为升级后必须改用连接 URL 参数如session.namevalue或 Presto CLI 的--session选项来设置会话属性否则会收到异常。非查询语句支持补全驱动现在能正确处理非查询语句DDL/DML 等具体能力包括Statement接口支持execute方法的全部变体execute(String)、execute(String, int)、execute(String, int[])、execute(String, String[])支持getUpdateCount与getLargeUpdateCount方法用于获取受影响行数。这意味着通过 JDBC 执行CREATE TABLE、INSERT、DELETE、UPDATE等语句时驱动行为与标准 JDBC 契约保持一致应用可以依赖getUpdateCount()判断写入影响行数。CLI 变更ctrl-C取消查询时总是清屏取消查询后终端不再残留查询输出碎片交互体验更干净客户端请求超时可配置新增对客户端请求超时的配置能力便于在慢网络或长任务场景下调整等待上限。Network Topology Aware Scheduling网络拓扑感知调度Release 0.129 允许调度器在分发 split 时考虑网络拓扑通过node-scheduler.network-topology配置启用详见 Tuning Presto。配置项与取值在 admin/properties.rst 中对该配置的完整定义如下类型string允许值legacy、flat默认值legacy取值行为legacy调度 split 时忽略网络拓扑默认行为flat尝试将 split 调度到数据所在主机为本地 split 保留50% 的工作队列官方建议当分布式存储与 Presto worker 部署在同一批节点上时推荐使用flat可显著减少跨网络数据传输。示例配置写入 coordinator 的config.propertiesnode-scheduler.network-topologyflat源码级实现从当前仓库源码可以完整还原该特性的实现结构配置绑定NodeSchedulerConfig通过Config(node-scheduler.network-topology)读取该配置NodeSchedulerConfig.java默认值为legacy同时内部还预留了benchmark类型同文件NetworkTopologyType常量拓扑抽象NetworkTopology接口定义了两个核心方法——NetworkLocation locate(HostAddress address)将主机地址映射为网络位置与getLocationSegmentNames()返回位置分段语义说明并标注ThreadSafe要求实现必须线程安全NetworkTopology.java实现类FlatNetworkTopology将每个主机映射为单段位置machine/hostnameFlatNetworkTopology.javaLegacyNetworkTopology则维持原有忽略拓扑的行为模块装配在 ServerMainModule.java 中根据配置值将NetworkTopology接口绑定到LegacyNetworkTopology或FlatNetworkTopology单例。因此flat模式的核心机制是调度器优先把 split 派发给持有对应数据副本的 worker并保留 50% 队列容量给本地 split从而最大化数据本地性。若你的集群是存算一体架构worker 同时运行 HDFS 等服务此配置几乎是零成本的传输优化项。Hive ChangesS3 支持增强S3 区域固定pin to current region此前的版本在 EC2 中运行时会自动将 S3 客户端固定到当前区域Release 0.129 改为默认不再自动固定。如需启用在 Hive catalog 属性文件中设置hive.s3.pin-client-to-current-regiontrue启用该特性的影响有两面性必须启用才能访问**中国隔离区域China isolated region**的 S3 数据但启用后无法访问当前区域之外的数据客户端被钉死在本地区域。源码佐证该选项在 HiveS3Config.java 中定义Config(hive.s3.pin-client-to-current-region)的说明为 Should the S3 client be pinned to the current EC2 region。同时S3ConfigurationUpdaterS3ConfigurationUpdater.java中对应系统属性常量为presto.s3.pin-client-to-current-region。S3 服务端加密Server-Side Encryption该版本新增 S3 服务端加密支持启用方式hive.s3.sse.enabledtrue源码佐证在 HiveS3Config.java 中定义ConfigDescription(Enable S3 server side encryption)。与之配套的还有加密类型与密钥配置# 加密类型S3SSE-S3或 KMSSSE-KMS hive.s3.sse.typeKMS # 使用 KMS 时指定密钥 ID hive.s3.sse.kms-key-idyour-kms-key-id对应源码hive.s3.sse.type绑定到PrestoS3SseType枚举S3或KMS见 HiveS3Config.javahive.s3.sse.kms-key-id用于 SSE-KMS 模式。使用场景包括满足数据静态加密合规要求、防止 S3 服务端明文存储敏感数据。新增 S3 EncryptionMaterialsProvider 支持该版本还支持自定义 S3EncryptionMaterialsProvider允许用户通过实现该接口注入自定义加密材料如自定义密钥管理流程适用于对加密密钥生命周期有特殊管控需求的场景。具体接入方式是在 Hive catalog 属性中指定实现了EncryptionMaterialsProvider的类。新增 retention_days 表属性Hive 连接器新增retention_days表属性用于为表设置保留天数。该属性允许你在建表时声明数据保留周期如配合定时清理任务使用例如CREATE TABLE orders ( order_id bigint, ... ) WITH ( format ORC, retention_days 30 );注意retention_days只是向元数据Hive Metastore写入保留周期声明实际的过期数据清理仍需由外部运维任务依据该属性执行。升级与验证清单围绕 Release 0.129 的变更建议升级后依次验证正确性回归重点跑一遍包含OUTER JOIN、空数组/全 NULL 数组CAST、ORDER BY ... LIMIT的查询用例内存监控核对确认使用max_by/min_by的查询内存曲线变化符合预期统计口径修正JDBC 行为测试验证应用对SET SESSION的异常处理以及INSERT/DELETE后getUpdateCount()返回值S3 配置生效在 Hive catalog 中按需开启hive.s3.sse.enabled与hive.s3.pin-client-to-current-region并用SHOW CREATE TABLE确认retention_days属性写入调度优化存算一体集群可将node-scheduler.network-topology设为flat对比前后查询延迟与网络流量。相关延伸阅读完整的节点调度属性清单见 admin/properties.rst性能调优指南见 Tuning PrestoSQL 语法参考见 SET SESSION、RESET SESSION 与 SHOW SESSION。赞分享大数据数据库后端【免费下载链接】prestoThe official home of the Presto distributed SQL query engine for big data项目地址https://gitcode.com/gh_mirrors/pre/presto点击查看免费下载相关推荐Presto Release 0.75 技术解读Hive S3 调优、JSON 路径语法、负载感知调度与 Row Number 优化Presto Release 0.75 技术解读Hive S3 调优、JSON 路径语法、负载感知调度与 Row Number 优化 Release 0.75大数据数据库后端Kubernetes 批处理工作组 2022 年度报告解读Job API 增强、Kueue 与拓扑感知调度Kubernetes 批处理工作组 2022 年度报告解读Job API 增强、Kueue 与拓扑感知调度 导读 本文围绕 Kubernetes 社区仓库中开源治理文档研发协作Volcano HyperNode 网络拓扑自动发现实战从 ConfigMap 配置到调度器拓扑感知Volcano HyperNode 网络拓扑自动发现实战从 ConfigMap 配置到调度器拓扑感知 本文围绕 Volcano 的 HyperNode 网络拓云原生后端任务调度批处理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表