数据库数据分析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),仅供参考
企业数字化 ERP 产品动态
相关推荐
搞定贝努鸟:3步重构解决版本升级后API全变痛点 搞定贝努鸟:3步重构解决版本升级后API全变痛点 上周刚把项目里的核心模块从 v2 升级到 v3,结果一跑测试,满屏红叉。最让人头大的是,原本封装好的 BirdEngine 接口在 v3 里直接重构了, fetch() 变成了… · 2026/9/23 3:36:12
数据库工程师培训机构推荐:从报名学习到考试拿证,报考全攻略 数据是企业的核心资产,数据库工程师是管理和守护这些资产的”数据管家”。从银行交易到电商订单,数据库工程师是IT系统不可或缺的技术岗位。本文给你一份完整的数据库工程师报考全攻略。
一、数据库工程师是做什么的?
数据库工程师是负责数据… · 2026/9/23 3:36:12
网络安全架构师培训机构推荐:从报名学习到考试拿证,报考全攻略 在企业安全体系从”单点防护”走向”整体防御”的今天,网络安全架构师作为安全体系的顶层设计者,是行业中的高端稀缺人才。本文给你一份完整的网络安全架构师报考全攻略。
一、网络安全架构师是做什么的?
网络安全架构师是负责企业网络安全体… · 2026/9/23 3:36:12
别再被爱和自由的博客面试题坑死:5个高频踩坑点全解析 别再被爱和自由的博客面试题坑死:5个高频踩坑点全解析 面试被问原理答不上来,是大多数后端开发者的噩梦。尤其是当面试官抛出那些看似简单却暗藏杀招的高频面试题时,很多平时只懂调用API的“调包侠”瞬间大脑一片空白。今天咱们不聊虚的,直接切入正题… · 2026/9/23 4:17:13
MemBrain v2实践:冷冻电镜膜蛋白颗粒挑选的深度学习全流程解析 1. 从单点工具到全流程:MemBrain v2到底解决了什么问题冷冻电镜单颗粒分析(SPA)这几年已经成了结构生物学家的常规武器,但真正跑过完整流程的人都知道,最耗精力的往往不是电镜采集,而是后面的数据处理。尤其… · 2026/9/23 4:17:07
Modbus转MQTT实战指南:老旧设备上云、网关配置与调试全解析 你们是不是也遇到过这种情况:车间里那批用了十几年的PLC、仪表、变频器,本身跑得好好的,但数据就是出不了车间。想统计个开机率、想远程看个温度,要么靠人工拿本子去抄,要么就得连一个笨重的上位机。这两年很多工厂开始… · 2026/9/23 4:16:55
3天搞定中台之战最新消息入门到精通避坑指南 3天搞定中台之战最新消息入门到精通避坑指南 配置环境就卡半天?别急,这行老代码我写了十年,今天把中台之战最新消息的底层逻辑拆给你看。很多刚接触中台架构的朋友,往往在搭建本地开发环境时陷入泥潭,依赖冲突、端口占用、配置漂移,搞得人怀疑人生。其… · 2026/9/23 4:16:49
多智能体系统实战:角色分工、协作机制与LangGraph编排经验 1. 从单兵作战到团队协同:为什么单智能体撑不住复杂任务我最早接触 Agent 开发的时候,和大多数人一样,都是从单智能体起步的。一个 LLM 加上几个工具函数,套一个 ReAct 循环,能查天气、能算数学、能搜网页,… · 2026/9/23 4:16:49
3个坑让你代码跑不通?英雄连2指挥官实战项目选型指南 3个坑让你代码跑不通?英雄连2指挥官实战项目选型指南 复制来的代码跑不通,报错日志一片红,改了一晚上还没调好?这是很多开发者在接手【英雄连2指挥官】相关【实战项目】时的真实噩梦。别急着骂系统,大概率是你没搞懂底层通信协议和状态同步机制。很多… · 2026/9/23 4:16:49
3招搞定手机怎么下载微信面试难题实战项目解析 3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29