| 点击卡片“大数据实战演练”, 
 复兴“资料”可领取独家整理的学习资料! 
 [img=100%,39]https://p9.toutiaoimg.com/large/pgc-image/R7sTsxg6uriVli[/img]众所周知,要研究 Kafka,阅读 Kafka 源码是必不可少的环节。因此,本文将介绍如何使用 idea 加载 Kafka 源码并编译的具体步骤。由于 Kafka 核心模块是用 Scala 语言开发,用 Gradle 编译和构建的,因此下面先介绍相关环境的安装配置。
 分析:一、源码下载运行环境:windows 10
 Kafka 版本:1.1.1
 idea 版本:2020.03
 
 
 https://github.com/apache/kafka/archive/refs/tags/1.1.1.tar.gz如果下载缓慢,可使用该网站加速下载:https://shrill-pond-3e81.hunsh.workers.dev/
 得到源码之后,最好执行下 git init 、git 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 版本库为阿里源:
 
 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 启动类
 五、命令测试
 
 # 创建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.02、有的 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行):
 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  ----------分享一下我对 ambari 二次开发的一些理解~ Kafka的幂等性是什么意思,如何实现呢?
 Kafka精进 | Producer端核心参数及调优发起
 静静掌握 Kafka 常用命令,再也不用全网搜刮了(发起收藏)
 解惑 | kafka集群三节点下,挂掉一个节点,为什么消费者消费不到数据了
 kafka 如何对 topic 分区 replica leader 进行负载平衡
 必会 | 教你如何重新分布kafka分区、增加分区副本数
 最后说一句(求关注,别白嫖我)
 
 
 
 扫一扫,我们的故事就开始了。 
 另外公众号改变了推送规则,大家看文章不要忘记点击最下方的在看,点赞按钮,这样微信自动识别为常看公众号,否则很可能推送的文章可能淹没在别的文章找不到,谢谢大家。
 
 
  动动小手,让更多需要的人看到~ 
 |