一、概述
Kafka在雅虎內部被很多團隊使用,媒體團隊用它做實時分析流水線,可以處理高達20Gbps(壓縮數據)的峰值帶寬。
為了簡化開發者和服務工程師維護Kafka集群的工作,構建了一個叫做Kafka管理器的基於Web工具,叫做 Kafka Manager。這個管理工具可以很容易地發現分布在集群中的哪些topic分布不均勻,或者是分區在整個集群分布不均勻的的情況。它支持管理多個集群、選擇副本、副本重新分配以及創建Topic。同時,這個管理工具也是一個非常好的可以快速瀏覽這個集群的工具。
該軟件是用Scala語言編寫的。目前(2015年02月03日)雅虎已經開源了Kafka Manager工具。這款Kafka集群管理工具主要支持以下幾個功能:
1、管理幾個不同的集群;
2、很容易地檢查集群的狀態(topics, brokers, 副本的分布, 分區的分布);
3、選擇副本;
4、產生分區分配(Generate partition assignments)基於集群的當前狀態;
5、重新分配分區。
二、Kafka Manager下載及安裝
項目地址:https://github.com/yahoo/kafka-manager
這個項目比 https://github.com/claudemamo/kafka-web-console 要好用一些,顯示的信息更加豐富,kafka-manager本身可以是一個集群。
不過kafka-manager也沒有權限管理功能。
下載:
git clone git@github.com:yahoo/kafka-manager.git
下載完后,只能源代碼你什么也做不了,我們要把項目編譯打包,該軟件是用Scala語言編寫,把有編譯打包很麻煩,他依賴於sbt。sbt比較難安裝。
三、sbt安裝
1、下載sbt-0.13.11
我的服務器是centos 自動安裝幾次沒有成功,我還是選擇手動安裝。
請自己到http://www.scala-sbt.org/download.html下載最新版本,我的版本是sbt-0.13.11
2、建立目錄,解壓文件到所建立目錄
$ sudo mkdir /opt/scala/sbt $ sudo tar zxvf sbt-0.13.11.tgz -C /opt/scala/
3、建立啟動sbt的腳本文件
/*選定一個位置,建立啟動sbt的腳本文本文件,如/opt/scala/sbt/ 目錄下面新建文件名為sbt的文本文件*/ $ cd /opt/scala/sbt/ $ vim sbt /*在sbt文本文件中添加 BT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M" java $SBT_OPTS -jar /opt/scala/sbt/bin/sbt-launch.jar "$@" 然后按esc鍵 輸入 :wq 保存退出,注意紅色字體中的路徑可以是絕對路徑也可以是相對路徑,只要能夠正確的定位到解壓的sbt文件包中的sbt-launch.jar文件即可*/
並修改sbt文件權限
$ chmod u+x sbt
4、配置PATH環境變量,保證在控制台中可以使用sbt命令
$ vim /etc/profile /*在文件尾部添加如下代碼后,保存退出*/ export PATH=/opt/scala/sbt/:$PATH
/*使配置文件立刻生效*/ $ source /etc/profile
5、測試sbt是否安裝成功
第一次執行時,會下載一些文件包,然后才能正常使用,要確保聯網了,下載的過程分很慢。安裝成功后顯示如下
sbt sbt-version
[info] Set current project to sbt (in build file:/opt/scala/sbt/)
[info] 0.13.11
四、編繹打包
cd kafka-manager sbt clean dist
生成的包會在kafka-manager/target/universal 下面。生成的包只需要java環境就可以運行了,在部署的機器上不需要安裝sbt。
如果打包會很慢的要有點耐心呀,還有可能打包失敗,可以考慮配置代理。
四、Kafka Manager部署
1、打好包好,在部署機器上解壓,修改好配置文件,就可以運行了--解壓
unzip kafka-manager-1.0-SNAPSHOT.zip
2、修改conf/application.conf,把kafka-manager.zkhosts改為自己的zookeeper服務器地址
kafka-manager.zkhosts="192.168.1.237:2181"
3、啟動
cd kafka-manager-1.0-SNAPSHOT/bin ./kafka-manager -Dconfig.file=../conf/application.conf
4、查看幫助 和 后台運行
./kafka-manager -h nohup ./kafka-manager -Dconfig.file=../conf/application.conf >/dev/null 2>&1 &
說明:正常來說,play框架應該會自動加載conf/application.conf配置里的內容,但是貌似這個不起作用,要顯式指定才行。
參考: https://github.com/yahoo/kafka-manager/issues/16
5、默認http端口是9000,可以修改配置文件里的http.port的值,或者通過命令行參數傳遞:
./kafka-manager -Dhttp.port=9001
五、sbt 配置代理
sbt的配置http代理的參考文檔:http://www.scala-sbt.org/0.12.1/docs/Detailed-Topics/Setup-Notes.html#http-proxy
通過-D設置叄數即可:
java -Dhttp.proxyHost=myproxy -Dhttp.proxyPort=8080 -Dhttp.proxyUser=username -Dhttp.proxyPassword=mypassword
也可以用下面這種方式,設置一下SBT_OPTS的環境變量即可:
export SBT_OPTS="$SBT_OPTS -Dhttp.proxyHost=myproxy -Dhttp.proxyPort=myport"
注意:myproxy,這個值里不要帶http前綴,也不要帶端口號。
比如,你的代理是http://localhost:8123,那么應該這樣配置:
export SBT_OPTS="$SBT_OPTS -Dhttp.proxyHost=localhost -Dhttp.proxyPort=8123"