前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实操 | 10分钟带你轻松掌握 Kafka 源码编译环境搭建,调试无忧!

实操 | 10分钟带你轻松掌握 Kafka 源码编译环境搭建,调试无忧!

作者头像
create17
发布2022-11-17 09:38:38
2.2K0
发布2022-11-17 09:38:38
举报

众所周知,要研究 Kafka,阅读 Kafka 源码是必不可少的环节。因此,本文将介绍如何使用 idea 加载 Kafka 源码并编译的具体步骤。由于 Kafka 核心模块是用 Scala 语言开发,用 Gradle 编译和构建的,因此下面先介绍相关环境的安装配置。

说明: 运行环境:windows 10 Kafka 版本:1.1.1 idea 版本:2020.03

一、源码下载

kafka 1.1.1 源码下载地址:

https://github.com/apache/kafka/archive/refs/tags/1.1.1.tar.gz

如果下载缓慢,可使用该网站加速下载:https://shrill-pond-3e81.hunsh.workers.dev/

得到源码之后,最好执行下 git initgit add .git commit "xxx" 命令,这样后续文件的变化,在 git 上都能追溯到。

二、环境配置

1、Gradle

首先确认 Gradle 版本,打开 build.gradle 文件,发现 gradleVersion = "4.8.1"。

2、Scala

然后再确认 Scala 版本,打开 gradle.properties 文件,可以看到 scalaVersion 是 2.11.12 。

三、源码编译

强烈建议先别用 idea 等工具打开项目!!!

1、编译之前,建议先配置 gradle 版本库:
代码语言:javascript
复制
maven { url 'https://maven.aliyun.com/repository/public' }

可以先用 Sublime 或 Notepad++ 来编译文件:

2、执行 gradle 命令,会生成 gradlew、gradlew.bat、gradle/wrapper 目录。

四、本地运行 kafka

1、执行 gradlew idea 命令。
2、idea 安装 Scala 插件

插件安装完,需要重启 idea 才能生效。

3、用 idea 打开项目,并启动
  • 用 idea 打开项目后,多执行几次 “Reload All Gradle Projects” 按钮。
  • 将 config 目录下的 log4j.properties 文件拷贝到 core/src/main/resources 目录下。
  • 修改 config/server.properties 文件,修改 log.dirs、zookeeper.connect 配置。
  • 配置 Application 启动类

启动成功:

五、命令测试

代码语言:javascript
复制
# 创建topic
.\bin\windows\kafka-topics.bat --create --zookeeper 192.168.62.66:2181/kafka1 --replication-factor 1 --partitions 1 --topic test

# 查看topic列表
.\bin\windows\kafka-topics.bat --list --zookeeper 192.168.62.66:2181/kafka1

六、可能遇到的错误集锦

1、Failed to apply plugin [id 'org.scoverage']

解决办法:

编辑 build.gradle 文件,将 org.scoverage:gradle-scoverage:2.1.0 修改为 2.5.0

2、有的 jar 包找不到

解决办法:

C:\Users\xxx\.gradle 目录删掉,重新加载项目,重新生成。

3、运行时乱码

如果还不行,可参考:https://cloud.tencent.com/developer/article/1795283

4、Failed to load class "org.slf4j.impl.StaticLoggerBinder".

解决办法:

在 build.gradle 文件中添加相关依赖(大约在594行):

代码语言:javascript
复制
project(':core') {
  println "Building project 'core' with Scala version ${versions.scala}"

  apply plugin: 'scala'
  apply plugin: "org.scoverage"
  archivesBaseName = "kafka_${versions.baseScala}"

  dependencies {
     ...(省略)
    // 添加以下两个依赖
    // https://mvnrepository.com/artifact/org.slf4j/slf4j-api
    compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'
    // https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12
    compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.25'
  }

解决。

5、错误: 找不到或无法加载主类 kafka.admin.TopicCommand

执行 .\bin\windows\kafka-topics.bat 会报 kafka.admin.TopicCommand 错误。

不知道为什么,执行了一下 core 模块的 gradle build,虽然命令失败了,但是又试了试 .\bin\windows\kafka-topics.bat 发现执行正常了。

七、总结

以上就是构建 Kafka 源码环境的所有步骤了。只有搭建好了 Kafka 的源码编译环境,你才能更方便地 debug 某一功能,梳理其中逻辑。

觉得本文写的不错,欢迎右下角点赞、在看、转发哟~

---------- END ----------

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据实战演练 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、源码下载
  • 二、环境配置
  • 三、源码编译
    • 1、编译之前,建议先配置 gradle 版本库:
      • 2、执行 gradle 命令,会生成 gradlew、gradlew.bat、gradle/wrapper 目录。
      • 四、本地运行 kafka
        • 1、执行 gradlew idea 命令。
          • 2、idea 安装 Scala 插件
            • 3、用 idea 打开项目,并启动
            • 五、命令测试
            • 六、可能遇到的错误集锦
              • 1、Failed to apply plugin [id 'org.scoverage']
                • 2、有的 jar 包找不到
                  • 3、运行时乱码
                    • 4、Failed to load class "org.slf4j.impl.StaticLoggerBinder".
                      • 5、错误: 找不到或无法加载主类 kafka.admin.TopicCommand
                      • 七、总结
                      相关产品与服务
                      内容分发网络 CDN
                      内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档