在上篇文章kafka核心概念中,解释了kafka的核心概念,下面开始进行kafka源码编译。为什么学习源码需要进行源码编译呢,我认为主要有两点:
- 可以进行debug,跟踪代码执行逻辑
- 可以对源码改动,强化学习学习效果
安装软件列表
本文以Windows为例进行说明,需要安装的软件主要有
- jdk-1.8
- scala-2.10
- gradle-3.1
- zookeeper3.4.9
- idea
安装jdk1.8
下载地址:https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html,下载后配置一下环境变量:
增加环境变量JAVA_HOME,值为E:\jdk-8
编辑环境变量Path,增加%JAVA_HOME%\bin
安装Scala
下载地址:https://www.scala-lang.org/files/archive/,使用此地址下载快很多,下载后配置一下环境变量:
增加环境变量SCALA_HOME,值为E:\scala-2.10.6
编辑环境变量Path,增加%SCALA_HOME%\bin
配置完成后打开终端输入scala -version
安装gradle
下载地址:https://mirrors.cloud.tencent.com/gradle/,下载后配置一下环境变量:
增加环境变量GRADLE_HOME,值为E:\gradle-3.1
编辑环境变量Path,增加%GRADLE_HOME%\bin
安装zookeeper
下载地址:https://archive.apache.org/dist/zookeeper/,可以不配置环境变量,在bin目录下直接点击zkServer.cmd
,即可启动
kafka源码构建
下载源码
使用的源码版本为0.10.0.1,下载地址:https://archive.apache.org/dist/kafka/0.10.0.1/kafka-0.10.0.1-src.tgz
安装Scala插件
idea默认不支持Scala,需要在idea中安装Scala插件
配置启动kafka
log4j.properties
在kafka服务端使用log4j输出日志,启动前把config目录下的log4j.properties放到core/src/main/scala路径下
server.properties
server.properties是kafka的主要配置文件,修改以下3项即可
listeners = PLAINTEXT://your.host.name:9092
log.dirs=Y:/kafka-logs
zookeeper.connect=192.168.0.103:2181
配置idea
在运行设置中,进行如下的配置:
Main class :
kafka.Kafka
Program arguments :
config/server.properties
Working Directory :
Y:\kafka
Classthpath :
core
验证
配置完成后,点击运行,即可启动kafka,可以通过编译好的kafka脚本去尝试连接kafka进行操作,下载一份编译好的kafka,https://archive.apache.org/dist/kafka/0.10.0.1/kafka_2.10-0.10.0.1.tgz,然后使用里面脚本进行操作。
Y:\kafka_2.10-0.10.1.1>bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test01
Created topic "test01".
Y:\kafka_2.10-0.10.1.1>bin\windows\kafka-topics.bat --zookeeper localhost:2181 --list
test01
创建成功表示编译后的代码启动成功。
参考书籍:《kafka源码剖析》