Kafka 核心技术与实战
胡夕
Apache Kafka Committer,老虎证券技术总监
52815 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 47 讲
开篇词 (1讲)
结束语 (1讲)
Kafka 核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

39 | 从0搭建基于Kafka的企业级实时日志流处理平台

如何选择
比较不同方案
Kafka Streams功能
纯Kafka方案优势
查看统计结果
流处理应用启动
Kafka Streams程序编写
实时处理
添加File Connector
启动Kafka Connect
文件连接器
外部数据源
数据收集
使用Kafka Connect+Kafka Core+Kafka Streams组合
复杂度和运维成本增加
Flume+Kafka+Storm/Spark Streaming/Flink
开放讨论
小结
Kafka Streams组件
Kafka Connect组件
流处理架构
带你从0搭建一个基于Kafka的实时日志流处理平台

该思维导图由 AI 生成,仅供参考

你好,我是胡夕。今天我要和你分享的主题是:从 0 搭建基于 Kafka 的企业级实时日志流处理平台。
简单来说,我们要实现一些大数据组件的组合,就如同玩乐高玩具一样,把它们“插”在一起,“拼”成一个更大一点的玩具。
在任何一个企业中,服务器每天都会产生很多的日志数据。这些数据内容非常丰富,包含了我们的线上业务数据用户行为数据以及后端系统数据。实时分析这些数据,能够帮助我们更快地洞察潜在的趋势,从而有针对性地做出决策。今天,我们就使用 Kafka 搭建一个这样的平台。

流处理架构

如果在网上搜索实时日志流处理,你应该能够搜到很多教你搭建实时流处理平台做日志分析的教程。这些教程使用的技术栈大多是 Flume+Kafka+Storm、Spark Streaming 或 Flink。特别是 Flume+Kafka+Flink 的组合,逐渐成为了实时日志流处理的标配。不过,要搭建这样的处理平台,你需要用到 3 个框架才能实现,这既增加了系统复杂度,也提高了运维成本。
今天,我来演示一下如何使用 Apache Kafka 这一个框架,实现一套实时日志流处理系统。换句话说,我使用的技术栈是 Kafka Connect+Kafka Core+Kafka Streams 的组合。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了如何利用Kafka构建实时日志流处理平台。作者首先指出了Flume+Kafka+Storm、Spark Streaming或Flink等技术栈的复杂性和运维成本,然后重点介绍了使用Kafka Connect+Kafka Core+Kafka Streams的组合来构建实时日志分析平台。文章通过实际操作演示了如何使用Kafka Connect组件收集数据,并演示了如何启动Kafka Connect和添加File Connector来实时读取Nginx的access日志。接着,作者介绍了Kafka Streams组件的使用,指出了它作为一个类库的优势,并展示了如何编写Kafka Streams程序来实时分析Kafka主题数据。整体而言,本文为读者提供了一套完整的技术实现方案,展示了基于Kafka的实时日志流处理平台的搭建过程。文章还提到了Kafka Streams提供的功能远不止做计数这么简单,并展望了后续将重点介绍Kafka Streams组件的使用和管理。值得一提的是,相比于Flume+Kafka+Flink技术栈,纯Kafka方案在运维和管理成本上有着极大的优势。文章以实际操作为主线,为读者提供了清晰的技术实现路径,对于构建实时流处理平台的读者具有很高的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Kafka 核心技术与实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(29)

  • 最新
  • 精选
  • 陈国林
    老师好,说下我这边的一些实践。19年一直在做容器日志平台,我们目前的方案是 Fluentd + Kafka + ELK。使用Fluentd做为容器平台的采集器实时采集数据,采集完之后数据写入Kafka通过Kafka进行解耦,使用Logstash消费后写入ES。这套方案目前在容器环境下应该可以说是标配

    作者回复: 棒棒:)

    2020-02-03
    2
    22
  • 小刀
    老师,上述Kafka Connect+Kafka Core+Kafka Streams例子中,生产者和消费者分别是什么?

    作者回复: 此时,生产者和消费者化身成这个大平台的小组件了。Connect中只有producer,将读取的日志行数据写入到Kafka源主题中。Streams中既有producer也有consumer:producer负责将计算结果实时写入到目标Kafka主题;consumer负责从源主题中读取消息供下游实时计算之用。

    2019-09-03
    8
  • 石栖
    胡老师,对于Stream的处理和之前的topic-message,我感觉没什么大的区别,感觉流程是类似的。只不过是在以前的consumer中额外添加了producer的逻辑,把处理结果发送到另一个topic中。感觉不用这里说的stream也能实现一样的效果。我不是个明白本质的区别是什么,麻烦能解释一下吗?谢谢

    作者回复: Kafka Streams提供了consume-process-produce的原子性操作,也就是端到端的EOS。如果你自己实现代价很高

    2020-05-05
    2
    7
  • ban
    老师,示例中开启Connect后启动读取的是本机的nginx日志,但如果nginx日志是在其他机器上面,那Connect是不是支持远程读的还是怎么样可以读取到其他机器的日志?

    作者回复: 在Nginx日志机器上开启,因为目前File Connector只支持从本地文件读取

    2019-09-14
    4
  • timmy21
    老师如果有多个分区,并且消息写入是随机的。那么多个kafka streams实例在对os_type进行group_by统计时,需要相互之间传输数据进行shuffle操作吗?

    作者回复: 需要的。Kafka Streams使用特殊的repartition topics来保存shuffle后的数据

    2020-10-03
    3
  • helloworld
    写的不太明白啊, 难道每一个nginx服务器上都要部署kafka吗

    作者回复: 是的

    2020-03-10
    3
    3
  • w
    老师我想问一下。Kafka Connect 是一个单独的组件么?类似agent一样,可以在目标采集机器(非kafka集群)上部署?那如果要用,岂不是每个业务机器都要装个kafka? 单机模式跟集群模式有啥区别呢?没太懂。比如kafka集群上启动单机模式的connect ?不行么? 最终操作,都往同一个topic里扔就好了?

    作者回复: 是单独的组件。需要单独部署。 kafka集群上启动单机模式的connect --- 这是可以的

    2020-02-25
    3
  • Ball
    老师我有问题要请教下,添加 Connector 步骤里面是用 http REST 接口新建的,那新建的 Connector 是跑在 Broker 里面还是说又启动了一个新的 Java 进程执行 Connector?

    作者回复: 新的java进程

    2020-01-14
    3
  • 霍格沃兹小学徒
    老师 想咨询个问题 我这边如果日志不是来自于文件 而是来自于telenet的输出 需要怎么做日志实时分析。 而且需要有上万个telenet实例一起在输出 我需要分别分析每个实例按照某种统一规则

    作者回复: 可以为每个telnet的数据流编制一个key来管理

    2021-03-25
    3
    1
  • Geek_6e00ab
    为什么消费者取出来的值是乱码的

    作者回复: 因为是二进制字节序列,需要反序列化

    2021-01-28
    1
收起评论
显示
设置
留言
29
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部