druid 36.0.0
druid druid-36.0.0
druid 是什么
Apache Druid:高性能实时分析数据库。
druid druid-36.0.0 版本更新了什么
Apache Druid 36.0.0 包含超过 189 个新功能、错误修复、性能增强、文档改进以及来自 34 个贡献者的额外测试覆盖范围。
请参阅完整的更改集 了解更多详细信息,包括错误修复。
在升级到 Druid 36.0.0 之前,请查看升级说明。 如果您要跨多个版本进行升级,请参阅升级说明页面,其中列出了最新 Druid 版本的升级说明。
重要功能、更改和弃用
本节包含有关新功能和现有功能的重要信息。
功能区域及相关变更
本节包含按区域分隔的详细发行说明。
德鲁伊干员
Druid Operator 是一个 Kubernetes 控制器,用于管理 Druid 集群的生命周期。 Operator 通过可通过以下方式配置的自定义逻辑简化了 Druid 集群的管理 Kubernetes CRD。
基于成本的流摄取自动缩放
Druid 现在支持基于成本的流式摄取自动缩放,通过平衡延迟减少和资源效率来优化任务计数。此自动缩放策略使用以下公式:
totalCost = lagWeight × lagRecoveryTime + idleWeight × idlenessCost
其中考虑了清除积压的时间和计算时间:
lagRecoveryTime = aggregateLag / (taskCount × avgProcessingRate) — time to clear backlog
idlenessCost = taskCount × taskDuration × predictedIdleRatio — wasted compute time
Kubernetes 客户端模式(实验)
在 kubernetes-overlord-extensions 中添加了实验性 Kubernetes 客户端模式。新模式使用fabric8 SharedInformers来缓存k8s元数据。这大大减少了 Overlord 和 k8s 控制平面之间的 API 流量。您可以使用以下配置尝试此功能:
druid.indexer.runner.useK8sSharedInformers=true
cgroup v2 支持
现在支持 cgroup v2,并且所有 cgroup 指标现在都会发出 cgroupversion 来识别正在使用哪个版本。
如果检测到 v2,以下指标将自动切换到 v2:CgroupCpuMonitor、CgroupCpuSetMonitor、CgroupDiskMonitor、MemoryMonitor。如果检测到 v2,CpuAcctDeltaMonitor 会正常失败。
此外,CgroupV2CpuMonitor 现在还发射 cgroup/cpu/shares 和 cgroup/cpu/cores_quota。
Dart 查询报告
Dart 现在支持正在运行的查询和最近完成的查询的查询报告。可以从 /druid/v2/sql/queries/<sqlQueryId>/reports 端点获取报告。
响应的格式是一个带有两个键的 JSON 对象,“query”和“report”。 “query”键与现有 /druid/v2/sql/queries 端点提供的信息相同。 “报告”键是包括MSQ报告的报告图。
您可以使用以下配置控制报告的保留行为:
druid.msq.dart.controller.maxRetainedReportCount:保留的报告的最大数量。默认值为 0,表示不保留报告druid.msq.dart.controller.maxRetainedReportDuration:报告以 ISO 8601 持续时间格式保留多长时间。默认为PT0S,表示关闭基于时间的过期时间
新的段格式
新版本 10 段格式在版本 9 的基础上进行了改进。默认情况下它处于关闭状态,并且与旧的段格式版本不兼容。
设置 druid.indexer.task.buildV10=true 以新格式制作段。
如果降级,则必须使用受支持的段格式版本重新索引数据。
您可以使用 bin/dump-segment 工具查看分段元数据。该工具输出序列化的 JSON。
网络控制台
Web 控制台中提供的新信息
Web 控制台现在包含有关可用处理器数量和总内存(以二进制字节为单位)的信息。
此信息也可通过 sys.servers 表获取。
其他 Web 控制台改进
- 添加了对 MSQ 执行阶段不活动工作人员的跟踪 #18768
- 添加了 JSON 视图和舞台查看器的刷新按钮 #18768
- 现在可以在查询视图中定义
ARRAY类型参数 #18586 - 更改系统表查询现在自动使用本机引擎 #18857
- 改进了时间图表以支持多种措施 #18701
摄入
- 添加了对 AWS
InternalError代码重试的支持 #18720 - 改进摄取,使其更有弹性。如果任务日志上传失败并出现异常,摄取任务不再失败 #18748
- 改进了 Druid 处理数据与预期类型不匹配的情况的方式 #18878
- 改进了 JSON 摄取,以便 Druid 可以直接从字典或索引结构计算 JSON 值,从而允许摄取完全跳过持久保存的原始 JSON 数据。这减少了磁盘存储大小 #18589
- 现在,您可以在嵌套列中的长/双精度字段的完全基于字典的索引和仅空索引之间进行选择#18722
基于 SQL 的摄取
额外的摄取配置
您现在可以使用以下配置来控制数据的获取和存储方式:
maxInputFilesPerWorker:控制每个worker的输入文件或段的最大数量。maxPartitions:控制任何单个阶段的最大输出分区数,这会影响摄取期间生成的段数。
其他基于 SQL 的摄取改进
- 添加
maxRowsInMemory以替换rowsInMemory。rowsInMemory现在充当提供该配置的替代方式,如果指定了maxRowsInMemory,则该配置将被忽略。以前,仅存在rowsInMemory#18832
流媒体摄取
#####记录偏移量和分区
您现在可以使用 KafkaInputFormat 摄取记录偏移量 (offsetColumnName) 和分区 (partitionColumnName)。它们的默认名称分别为 kafka.offset 和 kafka.partition。
其他流媒体摄取改进
- 改进了主管,使他们无法在主管停止时终止任务 #18767
- 改进了基于延迟的自动缩放器,用于流式传输 #18745
- 改进了
SeekableStream管理程序自动缩放器,以等待任务完成后再尝试后续缩放操作。这有助于防止重复的主管历史记录条目 #18715
查询
其他查询改进
- 改进了无效
regex_exp查询的用户体验。现在返回错误 #18762
集群管理
基于 Kubernetes 的部署的动态容量
Druid 现在可以动态调整任务运行程序的容量。
在对 /druid/indexer/v1/k8s/taskrunner/executionconfig 的 POST API 调用中包含 capacity 字段。以这种方式设置值会覆盖 druid.indexer.runner.capacity。
服务器属性表
sys.server_properties 表公开了为每个 Druid 服务器配置的运行时属性。每行代表与特定服务器关联的单个属性键值对。
其他集群管理改进
- 为 Overlord 添加了服务质量过滤,以便运行状况检查线程不会被阻塞 #18033
数据管理
其他数据管理改进
- 添加了
mostFragmentedFirst压缩策略,该策略优先考虑具有最小未压缩段的间隔 #18802 - 改进了段文件的删除方式,以防止在删除操作期间发生故障时保留部分段文件 #18696
- 改进了压缩,以便识别可以生成维度模式的多值维度 #18760
- 提高了拉动段时的可靠性 #18821
指标和监控
任务指标
所有任务指标现在都会发出以下维度:taskId、dataSource、taskType、groupId 和 id。请注意,发出 id 是为了向后兼容。在未来的版本中,它将被删除,取而代之的是 taskId 尺寸。
摄取指标
以下流式和批处理任务的指标现在发出实际值而不是 0:ingest/merge/time、ingest/merge/cpu 和 ingest/persists/cpu。
statsd 指标
以下指标已添加到 statsd 的默认列表中:
task/action/run/timetask/status/queue/counttask/status/updated/countingest/handoff/time
其他指标和监控改进
-
在
ingest/events/thrownAway公制基础上添加了reason尺寸。这可以提高对为什么某些事件在逻辑上被排除在摄取之外的可观察性 #188855 -
在启动或停止之前为阶段的所有处理程序添加了日志记录,这可以帮助您了解执行顺序 #18662
-
添加了新的 Jetty 线程池指标来捕获请求服务线程统计信息:
jetty/threadPool/utilized、jetty/threadPool/ready和jetty/threadPool/utilizationRate#18883 -
在
segments/max公制中添加了tier和priority尺寸 #18890 -
添加了
GroupByStatsMonitor,其中包括用于在 Peons 上发出的指标的dataSource和taskId维度 #18711 -
添加了
task/waiting/time指标,该指标测量将任务放置到任务运行程序上进行调度和运行所需的时间 #18735 -
将
supervisorId添加到流任务指标中,以帮助澄清多个主管将数据提取到单个数据源中的情况 #18803 -
在
druid.monitoring.monitors中添加了StorageMonitor,以通过段缓存测量存储和虚拟存储使用情况 #18742 -
Druid 现在记录以下内容:
-
更改了 Prometheus 发射器 TTL 跟踪以考虑所有标签值组合,而不仅仅是指标名称。未设置 TTL 时不会跟踪标签 #18718 #18689
-
将生命周期
stop()更改为在info级别记录以匹配start()#18640 -
更改了指标发射的触发器,以便在任务完成时随时发射指标 #18766
-
改进了指标发射器,使其发出所有任务完成情况的指标 #18766
扩展
SpectatorHistogram 扩展
升级说明和不兼容的更改
升级注意事项
MSQ 控制器任务
从 Druid 30 或更早版本升级时,MSQ query_controller 任务可能会在滚动更新期间失败,因为添加了与这些旧版本不向后兼容的新计数器。您可以在更新完成后重试任何失败的查询;或者,您可以在滚动更新期间需要运行的任何 MSQ 作业的查询上下文中将 includeAllCounters 设置为 false;或者您可以先升级到德鲁伊31-35,然后再升级到德鲁伊36。
段格式
Druid 36.0.0 支持段格式版本 10。以前版本的 Druid 不支持版本 10。如果降级,则必须使用支持的段格式版本重新索引数据。
已弃用的指标
之前从 JettyMonitor、OshiSysMonitor、JvmMonitor、JvmCpuMonitor、JvmThreadsMonitor 和 SysMonitor 发出 id 维度来表示任务 ID 的 peons 上的监视器已被弃用,并将在未来版本中删除。请改用 taskId 尺寸。
删除的指标
以下过时的指标已被删除:
segment/cost/raw#18846segment/cost/normalized#18846segment/cost/normalization#18846task/action/log/time#18649
开发者笔记
段文件接口
定义了新的 SegmentFileBuilder 和 SegmentFileMapper 接口来取代 FileSmoosher 和 SmooshedFileMapper 的直接使用,以抽象段构建和读取过程。
对于具有自定义列实现的扩展编写器来说,开发人员可见的主要变化是 Serializer 接口更改了 writeTo 方法:
- 现在接受
SegmentFileBuilder而不是FileSmoosher ColumnBuilder方法getFileMapper现在返回SegmentFileMapper而不是SmooshedFileMapper。
不提供自定义列实现的扩展不应受到这些更改的影响。
其他开发人员改进
- 添加了覆盖默认 Kafka 图像以进行测试的功能 #18739
- 将
fastDecompressor更改为safeDecompressor#18930 - 扩展现在可以提供查询工具包实现 #18875
- 删除了各个
pom文件中的版本覆盖。有关完整列表,请参阅拉取请求 #18708
依赖项更新
以下依赖项的版本已更改:
org.apache.logging.log4j:log4j-core从2.22.1到2.25.3#18874org.mozilla:rhino从1.7.14到1.7.14.1#18868- 用于 Oshi 显示器的
net.java.dev.jna和net.java.dev.jna版本,从5.13.0到5.18.1#18848 com.github.oshi:oshi-core from从6.4.4到6.9.1#18839bcpkix-jdk18on从1.78.1到1.79#18834org.eclipse.jetty从12.0.25到12.0.30#18773hamcrest从1.3到2.2#18708org.apache.commons:commons-lang3从3.18.0到3.19.0#18695org.apache.maven.plugins:maven-shade-plugin从3.5.0到3.6.1com.netflix.spectator从1.7.0到1.9.0#18887org.bouncycastle:bcpkix-jdk18on从1.79到1.81以解决SONATYPE-2025-001911
学分
@317布莱恩 @abhishekrb19 @阿德海普辛格 @aho135 @阿克沙特-贾恩 @amaechler @ashwintumma23 @capistrant @cecemei @clintropolis @cryptoe @dependabot[机器人] @EdwinIngJ @飞风格 @加布里埃尔CWT @gargvishesh @ginm @GWphua @hfukada @因波诺马列夫 @jtuglu1 @keoliva @kfaraz @kgyrtkirk @潘卡杰260100 @拉斯纳尔 @rohangarg @赵诗阳 @泰莎IO @廷努 @uds5501 @沃吉维茨基 @vtlim @作家吉尔
📦 仓库:apache/druid · 🏷️ 版本:
druid-36.0.0· 📅 发布:2026-02-09 · 查看英文原版 Release
本文由 NextStack 自动化流水线采集并翻译,内容以官方英文原文为准。
Release Note 由上游项目发布,本站仅索引镜像,版权归原作者所有。