Druid集群Tranquility Kafka数据导入失败问题排查求助
我之前踩过一模一样的Tranquility导入Kafka数据无反馈的坑,结合你的情况(集群节点正常、batch测试跑通),核心Druid集群没问题,咱们可以从以下几个方向逐步排查:
你直接用命令行启动的Tranquility,所有运行日志都会输出在控制台里,一定要仔细看有没有报错信息——比如:
- 提示无法连接Kafka broker
- 无法访问Druid Overlord节点
- 配置文件解析失败
- Kafka topic不存在/无权限读取
如果控制台日志刷得太快,可以把输出重定向到文件里慢慢看:
bin/tranquility kafka -configFile conf/kafka.json > tranquility.log 2>&1
这是最容易出问题的地方,重点检查这几个字段:
- Druid集群地址:在
dataSources -> <your-datasource> -> druidBeamConfig -> overlordLocator里,确保host/hosts和port是你Overlord节点的正确地址(默认端口8090)。如果是多Overlord节点,可以配置成数组形式:"overlordLocator": { "hosts": ["overlord-1:8090", "overlord-2:8090"], "port": 8090 } - Kafka连接配置:
kafkaConsumerProperties里的bootstrap.servers必须是你的Kafka broker正确地址,group.id要确保没有被其他消费者占用,auto.offset.reset建议设为earliest方便测试。另外要确认配置的topic名称完全正确(大小写敏感!)。 - 数据源配置:
dataSources里的dimensions和metrics要和Kafka数据的结构匹配,如果字段完全不匹配,Tranquility可能会静默丢弃数据。
先排除Kafka的问题:用Kafka自带的命令行工具,在Tranquility所在机器上测试能不能读取目标topic的数据:
# 替换成你的Kafka地址和topic名称 kafka-console-consumer.sh --bootstrap-server kafka-broker-1:9092,kafka-broker-2:9092 --topic your-target-topic --from-beginning
如果拿不到数据,那问题出在Kafka这边——要么topic没数据,要么Tranquility机器没权限访问Kafka,先解决这个再往下走。
这是很容易忽略的坑!Tranquility和Druid的版本必须严格对应,比如:
- Druid 0.20.x → Tranquility 0.17.x
- Druid 0.23.x → Tranquility 0.19.x
版本不匹配会导致Tranquility和Druid Overlord之间的通信协议不兼容,提交任务会静默失败,甚至连日志都没明显报错。
如果Tranquility那边没报错,就去看Overlord的日志(默认路径var/log/druid/overlord.log),搜索关键词tranquility或者indexer,看看有没有任务提交的请求被拒绝,或者配置不合法的提示——比如权限问题、任务资源不足、deepStorage配置异常(不过你batch测试正常,deepStorage应该没问题,但可以确认下)。
在Tranquility所在机器上,用curl测试Overlord的API是否能正常访问:
# 替换成你的Overlord地址 curl http://overlord-host:8090/druid/indexer/v1/leader
如果返回正常的leader节点信息,说明网络连通;如果超时或者报错,那就是防火墙/网络策略阻止了Tranquility访问Overlord,先打通网络。
内容的提问来源于stack exchange,提问作者Frank

