一、准備工作
操作系統環境:Windows10
JDK:1.8
zookeeper:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/stable/apache-zookeeper-3.5.9-bin.tar.gz
kafka:https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.6.1/kafka_2.12-2.6.1.tgz
二、介紹
1、Kafka是什么?
Apache Kafka® 是 一個分布式流處理平台
2、流處理平台的三種特性
(1)、可以讓你發布和訂閱流式的記錄。這一方面與消息隊列或者企業消息系統類似。
(2)、可以存儲流式 的記錄,並且有較好的容錯性。
(3)、可以在流式記錄產生時就進行處理。
3、Kafka的兩大應用場景
(1)、構造實時流數據管道,它可以在系統或應用之間可靠的獲取數據。(相當於MQ)
(2)、構建實時流式應用程序,對這些流數據進行轉換或者影響。(就是流處理,通過Kafka stream topic和topic之間內部進行變化)
4、Kafka相關概念
- Kafka作為一個集群,運行在一台或者多台服務器上.
- Kafka 通過 topic 對存儲的流數據進行分類。
- 每條記錄中包含一個key,一個value和一個timestamp(時間戳)。
5、Kafka有四個核心的API:
- The Producer API 允許一個應用程序發布一串流式的數據到一個或者多個Kafka topic。
- The Consumer API 允許一個應用程序訂閱一個或多個 topic ,並且對發布給他們的流式數據進行處理。
- The Streams API 允許一個應用程序作為一個流處理器,消費一個或者多個topic產生的輸入流,然后生產一個輸出流到一個或多個topic中去,在輸入輸出流中進行有效的轉換。
- The Connector API 允許構建並運行可重用的生產者或者消費者,將Kafka topics連接到已存在的應用程序或者數據系統。比如,連接到一個關系型數據庫,捕捉表(table)的所有變更內容。
三、zookeeper
1、安裝注意,Java1.8下zookeeper的版本問題。 
2、解壓后包含的目錄大致如下:
bin:zookeeper相關可執行文件,conf:zookeeper相關配置文件,docs:zookeeper相關文檔,lib:運行zookeeper需要的jar包,license.txt:許可證,notice.txt:相關注意聲明,readme.md:工具的相關工說明,README_packaging.txt:包裝的相關說明。
3、zookeeper的相關配置運行
(1)、在zookeeper的安裝目錄下找到conf文件夾,將zoo_sample.cfg復制一份更改為zoo.cfg。打開zoo.cfg文件,將dataDir=/tmp/zookeeper修改為Windows上的相關存放路徑,其它選項視情況修改。
(2)、然后在bin文件夾下找到zkServer.cmd文件雙擊運行,正常情況下cmd控制台會打印一長串的東西,這里就不放圖了。然后可以使用如下命令測試zookeeper是否啟動成功:
telnet localhost 2181 # 2181為默認端口
(3)、如果運行zkServer.cmd時,窗口一閃而過的話。可打開該文件,並在文件最后加入【pause】就可查看錯誤信息,然后根據錯誤信息排查。
四、Kafka
1、在Kafka的安裝目錄下找到config文件夾找到server.properties文件,打開並將其中的log.dirs=/tmp/kafka-logs修改為Windows上的相關存放路徑。將同目錄下的zookeeper.properties文件中的dataDir=/tmp/zookeeper修改和上面zookeeper的配置文件相同的路徑即可。
2、打開cmd程序,並切換 到Kafka的安裝路徑,輸入如下參數:
.\bin\windows\kafka-server-start.bat .\config\server.properties
(1)、等控制台輸出一大段后,出現如下所示,則表明Kafka的服務啟動成功:
(2)、如果出現如下錯誤,則可能是因為你的環境變量中存在了空格。
解決方法:在Kafka安裝目錄下找到bin\windows\kafka-run-class.bat,打開該文件,進行如下修改:
IF not defined CLASSPATH ( set CLASSPATH="%~1" ) ELSE ( set CLASSPATH=%CLASSPATH%;"%~1" )
修改為:
IF not defined CLASSPATH ( set CLASSPATH="%~1" ) ELSE ( set CLASSPATH="%CLASSPATH%";"%~1" )
注意:Kafka有關的路徑等盡量都不要包含空格。
五、使用示例
1、zookeeper和Kafka的cmd窗口都不要關閉,打開一個新的cmd窗口,並切換到Kafka的安裝目錄下。進行如下操作:
(1)、創建topic
.\bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test Created topic test.
(2)、查看topic列表
.\bin\windows\kafka-topics.bat --list --zookeeper localhost:2181
(3)、生產者,生產消息並發送到服務器,選擇存儲消息的topic。
.\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test
(4)、消費者,消費消息,選擇要消費的topic。打開新的cmd窗口操作。
.\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning
六、結束總結
1、相關工具的下載采用了清華大學鏡像站點進行下載,apache鏡像站點傳送:點擊傳送。
2、Kafka中文文檔:點擊傳送。
3、 apache-zookeeper-[version].tar.gz和apache-zookeeper-[version]-bin.tar.gz的區別:前者包含全部的源文件可以通過運行:mvn clean install進行構建,后者包含運行zookeeper所需的所有jar文件和完整的文檔(在docs文件夾中)。
4、友鏈:telnet介紹
5、注意:Windows中配置文件中的路徑分割符應該使用"/"。
6、推薦Linux下使用Kafka,Linux下的安裝使用的此處不做說明。推薦JDK1.8及以上使用Kafka。
7、可能遇到的問題:另一個程序正在使用此文件,進程無法訪問