Apache Druid Coordinator 节点配置完全指南:运行参数、动态配置与源码级原理
数据库数据分析OLAP大数据实时分析数据仓库后端【免费下载链接】druidApache Druid: a high performance real-time analytics database.项目地址https://gitcode.com/gh_mirrors/druid7/druid点击查看免费下载本篇技术指南围绕 Apache Druid 集群中的Coordinator协调器节点展开完整讲解其节点基础配置、协调运行参数、元数据轮询策略、可通过 HTTP 在线热更新的动态配置以及实验性的 Lookup 管理配置。Coordinator 是 Druid 集群的数据拓扑大脑负责按规则将 Segment 分配到 Historical 节点、执行均衡与清理。读完本文你将掌握 Coordinator 的全部可配置项及其默认值、实际示例配置文件并能结合本仓库源码理解其选举与定时调度机制。Coordinator 节点在集群中的角色与运行机制Coordinator 节点负责维护集群数据拓扑它在内存中维护当前世界状态周期性比对元数据存储Metadata Storage中可用的 Segment 集合与各 Historical 节点实际服务的 Segment 集合据此决定是否需要对数据拓扑做调整加载、卸载、均衡、清理、合并等。关于 Coordinator 节点的通用设计说明可参见 Coordinator 设计文档。从源码结构看Coordinator 的调度逻辑集中在 DruidCoordinator.java领导选举Leader Election多个 Coordinator 可通过LeaderLatch在 ZK 路径/druid/coordinator/_COORDINATOR上竞争领导权只有 leader 才真正执行协调工作见 DruidCoordinator.java#L492-L517 的createNewLeaderLatch。两类定时任务becomeLeader中使用scheduleWithFixedDelay注册两个 runnable——CoordinatorHistoricalManagerRunnable负责 Segment 加载/均衡/清理按druid.coordinator.period运行CoordinatorIndexingServiceRunnable负责向索引服务提交 merge/conversion/kill 等任务按druid.coordinator.period.indexingPeriod运行见 DruidCoordinator.java#L559-L600。Helper 流水线历史管理 runnable 依次执行DruidCoordinatorSegmentInfoLoader→ 服务器状态收集 →DruidCoordinatorRuleRunner→DruidCoordinatorCleanupUnneeded→DruidCoordinatorCleanupOvershadowed→DruidCoordinatorBalancer→DruidCoordinatorLogger见 DruidCoordinator.java#L725-L819这些 helper 类均位于 server/src/main/java/io/druid/server/coordinator/helper/ 目录下。Coordinator 除了使用全局配置见 Configuration 总览外还拥有下面几组专属配置。Node Config节点基础配置这一组配置用于声明当前节点自身在集群中的标识属性说明默认值druid.host当前节点的主机名。用于向其他节点通告本进程的可达位置一般应配置为http://${druid.host}/确实能访问到本进程InetAddress.getLocalHost().getCanonicalHostName()druid.port实际监听端口除非使用了端口映射否则应与druid.host上的端口一致8081druid.service服务名称。作为维度用于 metrics 和 alert 中区分不同服务druid/coordinator在实际部署中这三项通常在runtime.properties中显式声明例如本仓库的 examples/conf/druid/coordinator/runtime.propertiesdruid.servicedruid/coordinator druid.port8081注意druid.service的取值会被 Druid 内部服务发现机制ServiceAnnouncer用于注册因此不同节点类型的取值应有区分而当启用下文Coordinator 兼作 Overlord时druid.service的值还被用于解析 Overlord 服务。Coordinator Operation协调器运行配置这一组配置控制 Coordinator 的核心运行周期与行为开关是配置的重中之重属性说明默认值druid.coordinator.periodCoordinator 的运行周期。Coordinator 通过在内存中维护当前世界状态、周期性地比对可用 Segment 集合与实际被服务的 Segment 集合来决定数据拓扑是否需要调整。该属性设置两次运行之间的间隔PT60Sdruid.coordinator.period.indexingPeriod向索引服务提交 indexing 任务的频率。仅在开启 merge 或 conversion 时生效PT1800S30 分钟druid.coordinator.startDelayCoordinator 的运行前提是拥有最新的世界状态视图但当前的 ZK 交互代码无法让 Coordinator 确切得知状态加载是否完成。此延迟是给 Coordinator 足够时间相信自己已拿到全部数据的一种 hackPT300Sdruid.coordinator.merge.on是否尝试把小 Segment 合并成更优的 Segment 大小falsedruid.coordinator.conversion.on是否将旧 Segment 索引版本转换为最新索引版本falsedruid.coordinator.load.timeoutCoordinator 给 Historical 节点分配 Segment 时的超时时长PT15Mdruid.coordinator.kill.on是否提交 kill 任务以硬删除 unused Segment即从元数据存储和深层存储中删除。若为true则对所有白名单或全部dataSourceCoordinator 会按period周期性提交任务。白名单或全部可通过动态配置中的killAllDataSources与killDataSourceWhitelist设置falsedruid.coordinator.kill.period向索引服务发送 kill 任务的频率。取值必须大于druid.coordinator.period.indexingPeriod。仅在 kill 开启时生效P1D1 天druid.coordinator.kill.durationToRetain最近durationToRetain时间内的 Segment 不执行 kill取值必须大于等于 0。仅在 kill 开启时生效且必须显式指定。注意默认值是无效值PT-1S-1 秒druid.coordinator.kill.maxSegments每次 kill 任务最多删除 n 个 Segment取值必须大于 0。仅在 kill 开启时生效且必须显式指定。注意默认值是无效值0druid.coordinator.balancer.strategy指定 Coordinator 在 Historical 节点间分布 Segment 时使用的均衡策略diskNormalized让各节点磁盘占用趋于均匀random随机挑选节点costdruid.coordinator.loadqueuepeon.repeatDelayloadqueuepeon管理 Segment 加载与卸载的组件的启动与重复延迟PT0.050S50 msdruid.coordinator.asOverlord.enabled当前 Coordinator 节点是否同时充当 Overlord。开启后可以简化集群无需单独部署 Overlord 节点。若为true则必须同时设置druid.coordinator.asOverlord.overlordServicefalsedruid.coordinator.asOverlord.overlordService若druid.coordinator.asOverlord.enabled为true则必填。必须与独立 Overlord 节点上的druid.service以及 Middle Manager 上的druid.selectors.indexing.serviceName取值一致NULL源码中的默认值印证这些默认值在 DruidCoordinatorConfig.java 中通过Config/Default注解直接声明例如druid.coordinator.startDelay默认PT300sDruidCoordinatorConfig.java#L30-L32druid.coordinator.period默认PT60sDruidCoordinatorConfig.java#L34-L36druid.coordinator.kill.period默认P1D、druid.coordinator.kill.durationToRetain默认PT-1s、druid.coordinator.kill.maxSegments默认0DruidCoordinatorConfig.java#L60-L70。其中 kill 相关的三个默认值正印证了文档中默认值无效、开启 kill 必须显式指定的警告PT-1s与0都是非法占位值防止用户在不了解语义的情况下误开启硬删除。实际示例配置标准集群示例中仅显式覆盖了启动延迟与运行周期两个最关键的周期参数见 examples/conf/druid/coordinator/runtime.propertiesdruid.servicedruid/coordinator druid.port8081 druid.coordinator.startDelayPT30S druid.coordinator.periodPT30S快速入门配置quickstart则进一步缩短周期以便更快看到效果见 examples/conf-quickstart/druid/coordinator/runtime.propertiesdruid.servicedruid/coordinator druid.port8081 druid.coordinator.startDelayPT10S druid.coordinator.periodPT5S在快速入门单机场景下startDelay与period都被大幅缩短而在生产环境建议按文档默认值或结合元数据规模调整避免过于频繁的全量扫描。Metadata Retrieval元数据轮询配置Coordinator 通过周期性轮询元数据存储来感知 Segment、规则和配置的变化这组参数决定轮询频率与告警阈值属性说明默认值druid.manager.config.pollDurationmanager 轮询 config 表获取更新的频率PT1mdruid.manager.segments.pollDurationCoordinator 轮询活跃 Segment 集合更新的间隔。通常决定了 Coordinator 发现新 Segment 的滞后时间PT1Mdruid.manager.rules.pollDurationCoordinator 轮询活跃规则集合更新的间隔。通常决定了 Coordinator 发现规则变化的滞后时间PT1Mdruid.manager.rules.defaultTier默认规则将从哪个 tier 加载_defaultdruid.manager.rules.alertThreshold一次轮询失败后经过多长时间才发出告警PT10MDynamic Configuration运行时动态配置Coordinator 支持通过动态配置在运行中调整某些行为而无需重启节点。动态配置以 JSON 对象形式存储在 Druid 元数据存储的 config 表中。从源码看该 JSON 对象对应 CoordinatorDynamicConfig.java其 config 表键名为coordinator.config见 CoordinatorDynamicConfig.java#L33并通过 CoordinatorDynamicConfigsResource.java 暴露 HTTP 接口。推荐方式是使用 Coordinator Console 配置这些参数若需通过 HTTP 操作可将 JSON 对象以 POST 请求提交到http://COORDINATOR_IP:PORT/druid/coordinator/v1/config审计用可选请求头为便于审计配置变更POST 时可附带以下请求头请求头参数名说明默认值X-Druid-Author发起配置变更的作者X-Druid-Comment描述本次变更的备注示例动态配置 JSON{ millisToWaitBeforeDeleting: 900000, mergeBytesLimit: 100000000, mergeSegmentsLimit : 1000, maxSegmentsToMove: 5, replicantLifetime: 15, replicationThrottleLimit: 10, emitBalancingStats: false, killDataSourceWhitelist: [wikipedia, testDatasource] }对同一 URL 发起 GET 请求即可返回当前生效的配置 spec。各字段说明如下属性说明默认值millisToWaitBeforeDeletingCoordinator 需处于活跃状态多久之后才能开始从元数据存储中移除标记 unusedSegment90000015 分钟mergeBytesLimit参与合并的 Segment 的未压缩总大小上限字节524288000LmergeSegmentsLimit单个 append 任务 中最多包含的 Segment 数量100maxSegmentsToMove任意时刻最多可移动的 Segment 数量5replicantLifetimeSegment 在告警之前最多可处于等待复制状态的 Coordinator 运行次数15replicationThrottleLimit同一时刻最多可复制的 Segment 数量10emitBalancingStats是否输出均衡统计信息。这是一个开销较大的操作falsekillDataSourceWhitelist当druid.coordinator.kill.on为true时向其发送 kill 任务的 dataSource 列表nonekillAllDataSources当druid.coordinator.kill.on为true时对所有 dataSource 发送 kill 任务。若设为true则killDataSourceWhitelist必须为空或未指定false动态配置的源码约束从 CoordinatorDynamicConfig.java 的构造逻辑可以确认以下实现细节killDataSourceWhitelist同时兼容 JSON 字符串与字符串数组两种形式Coordinator Console 在更新请求中无法发送字符串数组因此支持逗号分隔字符串对应源码中的类型兼容处理若同时设置了killAllDataSourcestrue且killDataSourceWhitelist非空会抛出IAE异常——与文档中二选一的约束完全一致CoordinatorDynamicConfig.java#L90-L92动态配置中还包含文档表格未单列的balancerComputeThreads字段用于均衡计算的线程池大小最小为 1见 CoordinatorDynamicConfig.java#L71在 DruidCoordinator.java#L695-L697 中被用于创建BalancerStrategy的执行线程池。查看动态配置审计历史查询 Coordinator 动态配置的审计历史可对以下 URL 发起 GET 请求http://COORDINATOR_IP:PORT/druid/coordinator/v1/config/history?intervalintervalinterval的默认值可通过在 Coordinator 的runtime.properties中设置druid.audit.manager.auditHistoryMillis指定未配置时默认 1 周。如需查看审计历史最近n条记录可请求http://COORDINATOR_IP:PORT/druid/coordinator/v1/config/history?countnLookups Dynamic Config实验性以下配置控制 lookups 页面 中描述的 Lookup 动态配置行为属实验性功能属性说明默认值druid.manager.lookups.hostDeleteTimeout向某个节点发起DELETE请求后等待多久将该请求视为失败PT1sdruid.manager.lookups.hostUpdateTimeout向某个节点发起POST请求后等待多久将该请求视为失败PT10sdruid.manager.lookups.deleteAllTimeout等待所有DELETE请求完成的最长时间超时视为删除尝试失败PT10sdruid.manager.lookups.updateAllTimeout等待所有POST请求完成的最长时间超时视为尝试失败PT60sdruid.manager.lookups.threadPoolSize可并发管理的节点数量并发POST与DELETE请求。超过该限制的请求会进入队列等待空闲槽位10druid.manager.lookups.period检查配置变化的间隔毫秒数30_000配置落地建议综合以上内容Coordinator 配置落地时建议注意三点生产环境务必显式设置关键周期druid.coordinator.period与druid.coordinator.startDelay默认值60s/300s适合中等规模集群快速验证时可参考 quickstart 配置将其缩短见 examples/conf-quickstart/druid/coordinator/runtime.properties。kill 功能三件套必须同时配置开启druid.coordinator.kill.ontrue时必须同时显式设置druid.coordinator.kill.durationToRetain≥0与druid.coordinator.kill.maxSegments0否则默认的无效值会导致行为不符合预期。动态配置优先走 Coordinator Console运行时调整均衡、合并、复制与 kill 范围时尽量使用 Console 或带X-Druid-Author/X-Druid-Comment审计头的 HTTP 请求确保变更可追溯审计历史可通过/druid/coordinator/v1/config/history查询。Coordinator 的每一项配置最终都会通过 DruidCoordinatorConfig.java 注入到 DruidCoordinator.java 的调度循环中理解周期性扫描 动态热更新这两个核心机制就能准确掌控 Druid 集群数据拓扑的治理行为。赞分享数据库数据分析OLAP大数据实时分析数据仓库后端【免费下载链接】druidApache Druid: a high performance real-time analytics database.项目地址https://gitcode.com/gh_mirrors/druid7/druid点击查看免费下载相关推荐Apache Druid 动态配置 API 实战指南Coordinator 与 Overlord 的在线配置管理Apache Druid 动态配置 API 实战指南Coordinator 与 Overlord 的在线配置管理 本文系统讲解 Apache Druid 中通数据库OLAP大数据后端gRPC Python 消息压缩完整指南Channel / RPC / Server 三级压缩配置与实现原理gRPC Python 消息压缩完整指南Channel / RPC / Server 三级压缩配置与实现原理 gRPC 提供无损压缩lossless com任务调度大数据后端前端Apache Druid Realtime 节点配置完全指南参数详解、源码佐证与实战部署Apache Druid Realtime 节点配置完全指南参数详解、源码佐证与实战部署 本文聚焦 Apache Druid 中负责实时数据摄取与即时查询的数据库数据分析OLAP大数据实时分析数据仓库后端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

YOLO遥感油罐检测数据集全解析:标签格式转换与训练避坑指南

YOLO遥感油罐检测数据集全解析:标签格式转换与训练避坑指南

简介:面向YOLO目标检测学习者与遥感图像分析人员,这份遥感油罐检测数据集来自真实场景,图片质量高、场景丰富,使用LabelImg标注且框体质量高,可直接用于YOLOv5、YOLOv8等主流目标检测模型的训练与算法效果验证。压缩包…

2026/9/24 6:43:37 阅读更多 →
金蝶kis迷你版5大避坑指南附完整示例

金蝶kis迷你版5大避坑指南附完整示例

金蝶kis迷你版5大避坑指南附完整示例 官方文档翻了三遍还是配不平账?别急,金蝶kis迷你版的逻辑确实反直觉。 很多老会计被这套系统坑得够呛,尤其是数据迁移和凭证生成环节。 这篇干货直接给你5个高频报错的 完整示例…

2026/9/23 3:35:15 阅读更多 →
降AI率工具全面测评:十大工具实测对比与底层逻辑解析

降AI率工具全面测评:十大工具实测对比与底层逻辑解析

1. 为什么要降AI率?先把这个事说透先说个可能让你不太舒服的事实:现在大学里交论文、交课程报告,老师最先看的往往不是你写了什么,而是你的文字“像不像人写的”。2026年了,AI写作早就渗透进本科生的日常,从…

2026/9/23 3:35:15 阅读更多 →

最新新闻

FPGA+FX3实现USB3.0高速数据传输:从原理到338MB/s实战调优

FPGA+FX3实现USB3.0高速数据传输:从原理到338MB/s实战调优

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 6:43:38 阅读更多 →
在 Airbyte 中使用 smsmode SMS 连接器:基于 DeclarativeSource 的短信日志与用量同步实战

在 Airbyte 中使用 smsmode SMS 连接器:基于 DeclarativeSource 的短信日志与用量同步实战

数据工程数据集成ETL后端大数据 【免费下载链接】airbyte Open-source data movement for ELT pipelines and AI agents — from APIs, databases & files to warehouses, lakes, and AI applications. Both self-hosted and Cloud. 项目地址: https://gitcode.…

2026/9/24 6:43:38 阅读更多 →
网络工程师必备:10个高频排障命令详解与实战技巧

网络工程师必备:10个高频排障命令详解与实战技巧

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 6:43:38 阅读更多 →
Next.js 16 多语言 SEO 实战:用一个路由注册表同时派生 hreflang、sitemap 和语言切换器(9 种语言、132 个 URL)

Next.js 16 多语言 SEO 实战:用一个路由注册表同时派生 hreflang、sitemap 和语言切换器(9 种语言、132 个 URL)

这篇写给正在用 Next.js App Router 做多语言站点、需要每个页面正确输出 hreflang 和 sitemap 的开发者。要解决的问题只有一个:hreflang、sitemap、语言切换器三处的语言映射如何保证永远一致。 hreflang 是告诉搜索引擎「这个页面还有哪些语言版本、分别在哪个 …

2026/9/24 6:43:38 阅读更多 →
74LS160级联与任意进制计数器:从硬件到Verilog的完整设计指南

74LS160级联与任意进制计数器:从硬件到Verilog的完整设计指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 6:43:38 阅读更多 →
Linux/Android车机CarPlay协议模拟器开发实战

Linux/Android车机CarPlay协议模拟器开发实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 6:42:37 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →