在上篇文章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:9092log.dirs=Y:/kafka-logszookeeper.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源碼剖析》