【原創】Windows平台搭建Kafka源代碼開發環境(Eclipse版本)


  最近在研究Kafka源代碼,需要自己搭建一個開發環境。官網上給出的提示略顯簡單,照着做了一遍也碰到了一些問題。特此記錄下來。

開發環境: Oracle Java 1.7_u71 + Eclipse 4.4.1 + Scala 2.10.4 + Gradle 2.3 + Kafka 0.8.2.1

一、Gradle安裝配置

  Kafka代碼自0.8.x之后就使用Gradle來進行編譯和構建了,因此首先需要安裝Gradle。Gradle集成並吸收了Maven主要優點的同時還克服了Maven自身的一些局限性——你可以訪問https://www.gradle.org/downloads/ 下載最新的Gradle版本。下載解壓到一個目錄,然后創建一個環境變量GRADLE_HOME指向解壓的目錄,再將%GRADLE_HOME%\bin加到PATH環境變量中,Gradle就安裝配置好了。打開一個cmd輸入gradle -v 驗證一下:

 

二、Kafka源代碼下載

  安裝好Gradle之后我們開始下載Kafka的源代碼,當前最新的穩定版本是0.8.2.1,你可以從http://kafka.apache.org/downloads.html處下載源代碼包。下載之后解壓縮到一個目錄,目錄結構如下圖所示:

重要目錄的作用如下:

bin目錄:       Windows和Unix平台下的執行腳本,比如kafka-server-start,console-producer,console-consumer等
clients目錄:      Kafka客戶端代碼
config目錄:       Kafka配置文件,其中比較重要的是server.properties,啟動Kafka broker需要直接加載這個文件
contrib目錄:     Kafka與hadoop集成的代碼,包括hadoop-consumer和hadoop-producer
core目錄:         Kafka的核心代碼,也是作者后面重點要學習的部分
examples目錄: Kafka樣例代碼,例如如何使用Java編寫簡單的producer和consumer
system_test:   系統測試腳本,主要用python編寫
其他的目錄和配置文件大多和gradle配置有關,就不贅述了。

三、下載gradle wrapper類庫

  將這個配置單獨作為一個步驟是因為官網的教程中並沒有詳細給出這方面的配置方法。如果直接從官網下載了源代碼進而執行gradlew eclipse生成項目工程就會報錯:

Error: Could not find or load main class org.gradle.wrapper.GradleWrapperMain

  在Kafka源代碼的gradle子目錄中果然沒有wrapper類庫,因此我們要先安裝一個Gradle Wrapper庫,方法也很簡單,打開個cmd窗口,在Kafka源代碼根目錄下執行gradle wrapper即可。你只需運行這個命令一次即可。如果是首次安裝需要花一些時間去下載所需的jar包。Kafka的源代碼是用Scala語言編寫的,下圖中清晰地顯示我們使用Scala版本是2.10.4。你可以在gradle.properties文件中指定Scala版本。

命令運行成功之后,在kafka的gradle子目錄中會多出一個wrapper子目錄,里面包含了一個jar包和一個配置文件。至此Gradle wrapper已被成功安裝在本機:

四、生成Eclipse工程文件並導入到Eclipse中

  上述准備工作一切就緒后,我們現在可以生成Eclipse工程文件。具體做法為打開一個cmd窗口,切換到kafka源代碼根路徑下,運行gradlew eclipse,如果是第一次運行,可能會花費一些時間去下載必要的jar包,在等待了一段時間之后,終於看到了BUILD SUCCESSFUL的字樣表示項目工程文件生成成功:

一旦成功生成項目工程文件,我們就可以將kafka工程導入到Eclipse中。在Eclipse中Import->Existing Projects into Workspace的界面中可以看到有4個工程:

  core工程就是最核心的kafka工程,也是作者后面要重點研究的部分。另外貌似core工程會依賴於clients工程,因此筆者導入了core和clients兩個工程。導入之后一切看似很順利,不過后面發現Eclipse提示說core工程報錯:

scalatest_2.10-1.9.1.jar of core build path is cross-compiled with an incompatible version of Scala (2.10.0). In case this report is mistaken, this check can be disabled in the compiler preference page.

  看樣子是Scala compiler的版本問題,於是選中core工程,通過右鍵->Properties->Scala compiler進入Scala編譯器設置界面,將Scala版本設置為2.10,與gradle.properties中的保持一致,順手將target jvm的版本也調成了1.7。保存重新build之后Eclipse報錯消失。

五、配置server.properties

  kafka broker啟動時需要加載server.properties文件。該文件默認位置是在config目錄下,因此需要設置運行kafka.Kafka.scala時的Program arguments為../config/server.properties以保證Kafka.scala能夠找到該配置文件。

  另外,由於kafka broker會將一些元數據信息保存在zookeeper中,因此在啟動kafka broker之前必須要先有一個啟動着的zookeeper實例或集群,然后我們還需要在server.properties文件更新zookeeper連接信息(主機名:端口CSV列表),如下圖所示:

# Zookeeper connection string (see zookeeper docs for details).
# This is a comma separated host:port pairs, each corresponding to a zk
# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002". # You can also append an optional chroot string to the urls to specify the # root directory for all kafka znodes. zookeeper.connect=10.11.207.97:2181 # Timeout in ms for connecting to zookeeper zookeeper.connection.timeout.ms=6000

六、啟動kafka broker

  Okay! 現在可以說一切准備就緒了,可以運行kafka了,如果前面所有步驟都執行正確的話,一個kafka broker進程應該會正確地啟動起來,如下圖所示:

另外說一下,如果啟動時沒有看到任何log輸出,可以將config目錄下的log4j.properties文件拷貝到core\src\main\scala目錄下,應該就能解決此問題。

好了,至此你就可以使用這個可運行的環境來研究Kafka源代碼了。祝大家好運:)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM