kakfa源码调试

本文档详细介绍了如何进行Kafka源码的调试,包括环境准备、服务器启动步骤,以及解决在调试过程中遇到的错误问题。重点讨论了代理设置、源码编译、Gradle wrapper的使用、Kafka与Zookeeper的启动,以及针对特定错误的解决方案,如自动生成的消息格式类和SLF4J日志问题。
摘要由CSDN通过智能技术生成

kakfa源码调试 -- v2.5

一,环境准备
  1. 下载最新源码https://www.apache.org/dyn/closer.cgi?path=/kafka/2.5.0/kafka-2.5.0-src.tgz
  2. 下载gradle, https://gradle.org/releases/
  3. 进入源码的根路径,使用gradle编译 输入命令:
    1. gradle idea 等待一段时间就可以看到编译成功
    2. gradle wrapper
    3. gitbash
      1. export http_proxy=http://127.0.0.1:1081 设置代理
      2. ./gradlew jar
  4. 编译通过
  5. 导入idea打开
  6. 把client generated/generated-test拷贝到对于client包下,移除src <== TODO 不专业
二,kafka服务器启动
  1. windows环境测试需要下载编译好的kafka_2.11-2.4.1.tgz

    1. 通过:bin/zookeeper-server-start.sh config/zookeeper.properties启动zookeeper
  2. kafka服务启动

    1. 主类:kafka.Kafka
    2. 程序参数: config/server.properties
  3. 通过windows的bat命令测试

    1. kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 2 --topic test

    2. 查看zookeeper信息:bin/zookeeper-shell.sh localhost:2181

    3. kafka-console-producer.bat --broker-list localhost:9092 --topic test

    4. kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test

      1. 消费内部topic __consumer_offsets :
        1. kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic __consumer_offsets --formatter "kafka.coordinator.group.GroupMetadataManager$OffsetsMessageFormatter" --consumer.config consumer_config.properties --from-beginning
        2. consumer.properties 添加exclude.internal.topics=false
    5. kafka-topics.bat --list --zookeeper localhost:2181

    6. 消费情况:
      kafka-consumer-groups.bat --new-consumer --bootstrap-server localhost:9092  --describe
      

出错问题
  • Error:(19, 39) java: 程序包org.apache.kafka.common.message不存在.
  • 执行.gradlew 报错 找不到 org.gradle.wrapper.GradleWrapperMain
  • kafka程序启动,SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
    • core.iml修改slf4j的scope,直接删除
  • log4j:WARN No appenders could be found for logger (kafka.utils.Log4jControllerRegistration$).
    • 从config中拷贝log4j.properties 到 ,core/src/scala中
Kafka Connect是一个用于数据集成的开源工具,它是Apache Kafka项目的一部分。Kafka Connect旨在简化将数据从不同的数据源和数据目的地流动到Kafka集群的过程。 Kafka Connect的源码是以Java语言编写的,它包含了连接器和转换器等关键组件。连接器是负责从数据源中读取数据并将其写入Kafka的组件,它们支持许多常见的数据源,如数据库、文件系统、消息队列等。转换器用于对读取的数据进行转换和处理,以便在不同的数据格式和结构之间进行映射。 源码中的关键类包括Connector、Task、SinkTask和SourceTask。Connector类是连接器的主要实现,它负责配置和启动连接器的任务。每个连接器可以有一个或多个任务,Task类是连接器任务的抽象基类,负责实际的数据读写操作。SinkTask是将数据写入Kafka集群的任务,而SourceTask是从数据源中读取数据的任务。 Kafka Connect的源码还包含了许多其他的实用类和工具,用于处理连接器的配置、监控连接器的运行状态、处理错误和故障等。源码中的关键逻辑包括数据的序列化和反序列化、数据的转换和处理、连接器的动态扩展和配置的管理等。 通过研究Kafka Connect的源码,我们可以深入理解它的工作原理和实现细节,从而更好地使用和扩展Kafka Connect,满足各种数据集成的需求。我们可以通过修改或扩展源码来适应特定的数据源和数据目的地,并通过调试源码来解决连接器运行中的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值