Flume 和 Kafka 组合用挺多的,尤其在做日志采集链路的时候。不过你要是想着让 Flume 从 Kafka 拉数据再写回 Kafka,可得注意点坑——我就踩过。

Flume 的 Kafka Source 拉数据没问题,但 Kafka Sink 那边写不进去你设定的 Topic,数据反而回头跑到了 Source 的 Topic 里,像是兜了一圈又回去了。嗯,听起来挺魔幻,但实际就是这么回事。

问题出在 Flume Agent 里同时用 Kafka Source 和 Kafka Sink,会出现 Topic 配置冲突。简单说就是你以为 Sink 在往sinkTopic写,其实它压根没管那设置,还是写回了 Source 的sourceTopic,这就导致下游啥也拿不到。

要么就别在一个 Agent 里同时用 Kafka Source 和 Sink,要么就干脆换个方式,比如中间加个 Channel,或者拆分两个 Agent,清晰点也省事。这个 PDF 里讲得挺细的,还顺手给了几个相关链接,想深入了解的话可以一块看看。

比如Flume Kafka 整合这篇就不错,还有从 Kafka 上传到 HDFS 的实操文章,动手党可以直接照着搞。哦对了,如果你还在搞 Kafka 的审计追踪,Atlas Hook for Kafka也值得瞅一眼。

,如果你用 Flume 串 Kafka 链路,尤其是想 Kafka → Flume → Kafka,那这篇 PDF 挺值得看一眼,能帮你避坑不少。