標籤:exp 下載 sed server 位置 def 叢集配置 default fatal
一、簡介
Kafka 是一個實現了分布式的、具有分區、以及複製的日誌的一個服務。它通過一套獨特的設計提供了訊息系統中介軟體的功能。它是一種發布訂閱功能的訊息系統。
1、名詞介紹
Message
訊息,就是要發送的內容,一般封裝成一個訊息對象。
Topic
通俗來講的話,就是放置“訊息”的地方,也就是說訊息投遞的一個容器。假如把訊息看作是信封的話,那麼 Topic 就是一個郵箱
Partition && Log
Partition 分區,可以理解為一個邏輯上的分區,像是我們電腦的磁碟 C:, D:, E: 盤一樣,
Kafka 為每個分區維護著一份日誌Log檔案。
Producers(生產者)
和其他訊息佇列一樣,生產者通常都是訊息的產生方。
在 Kafka 中它決定訊息發送到指定Topic的哪個分區上。
Consumers(消費者)
消費者就是訊息的使用者,在消費者端也有幾個名詞需要區分一下。
一般訊息佇列有兩種模式的消費方式,分別是 隊列模式 和 訂閱模式。
隊列模式:一對一,就是一個訊息只能被一個消費者消費,不能重複消費。一般情況隊列支援存在多個消費者,但是對於一個訊息,只會有一個消費者可以消費它。
訂閱模式:一對多,一個訊息可能被多次消費,訊息生產者將訊息發布到Topic中,只要是訂閱改Topic的消費者都可以消費。
二、安裝zookeeper
1、簡介
Kafka使用zookeeper作為其分布式協調架構,很好的將訊息生產、訊息儲存、訊息消費的過程結合在一起。同時藉助zookeeper,kafka能夠生產者、消費者和broker在內的所以組件在無狀態的情況下,建立起生產者和消費者的訂閱關係,並實現生產者與消費者的負載平衡。
2、下載zookeeper
可以到zookeeper官網下載
http://zookeeper.apache.org/releases.html
3、配置zookeeper
(1)下載解壓完成後,來到conf檔案夾下,有一個 zoo_sample.cfg 官方預設的設定檔。複製一份,重新命名為 zoo.cfg
(2)配置,開啟zoo.cfg 修改配置資訊
#儲存記憶體中資料庫快照集的位置,如果不設定參數,更新交易記錄將被儲存到預設位置。dataDir=../zkData#記錄檔的位置dataLogDir=../zkLog#監聽連接埠clientPort=2181
(3)叢集配置
server.1=127.0.0.1:12888:1388server.2=127.0.0.1:12889:1389server.3=127.0.0.1:12887:1387
格式: server.A = B:C:D
A:是一個數字,表示第幾號伺服器
B:伺服器IP地址
C:是一個連接埠號碼,用來叢集成員的資訊交換,表示這個伺服器與叢集中的leader伺服器交換資訊的連接埠
D:是在leader掛掉時專門用來進行選舉leader所用的連接埠
完整的設定檔如下
複製兩份zookeeper解壓好配置後的檔案夾,命名為
在對應的檔案下下面修改zoo.cfg的監聽連接埠地址比如: 第一個zookeeper-3.4.6程式 修改zoo.cfg 設定檔
clientPort=2181
第二個zookeeper-3.4.6-2程式 修改zoo.cfg 設定檔
clientPort=2182
第三個zookeeper-3.4.6-2程式 修改zoo.cfg 設定檔
clientPort=2183
建立ServerID
在配置的dataDir目錄下面建立一個 myid 檔案,檔案內容就是對應的id號,
比如:
zookeeper-3.4.6程式 myid 檔案的內容 為 1
zookeeper-3.4.6-2程式 myid 檔案的內容 為 2
zookeeper-3.4.6-3程式 myid 檔案的內容 為 3
我這邊配置的目錄是
啟動zookeeper
在對應的bin目錄下啟動
zkServer.cmd
三、安裝kafka(1)下載
去官網 http://kafka.apache.org/下載即可 這邊下載的是
https://www.apache.org/dyn/closer.cgi?path=/kafka/0.8.2.2/kafka_2.9.2-0.8.2.2.tgz
這個版本
(2)配置
解壓後到config檔案夾下 開啟server.properties設定檔進行配置
(3)配置內容
修改或新增以下配置資訊
#唯一標識broker.id=0#監聽連接埠port=9092host.name=127.0.0.1#訊息最大大小message.max.bytes=50485760#配置副本數量 default.replication.factor=2#擷取的最大大小replica.fetch.max.bytes=50485760#隊列中訊息持久化存放的位置,可以多個目錄,用逗號分開log.dirs=/tmp/kafka-logs#預設的分區數num.partitions=2#對應著剛剛配置的zookeeper的三個ip與連接埠地址zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
(4)叢集配置
複製兩份解壓後的檔案,命名如下
修改部分配置資訊
在對應的server.properties中修改
#唯一標識
broker.id=0
broker.id=1
broker.id=2
#監聽連接埠
port=9092
port=9093
port=9094
啟動對應的kafka
進入到bin/windows目錄下 啟動kafka並指定設定檔
kafka-server-start.bat ../../config/server.properties
啟動過程中如果遇到Kafka中錯誤:
Unrecognized VM option ‘UseCompressedOops’ Error: Clould not create the Java Vritual Machine. Error: A fatal exception has occurres . Program will exit.
解決方案:
找到bin/windows/kafka-run-class.bat 檔案,
找到112行左右
IF ["%KAFKA_JVM_PERFORMANCE_OPTS%"] EQU [""] ( set KAFKA_JVM_PERFORMANCE_OPTS=-server -XX:+UseCompressedOops -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:+DisableExplicitGC -Djava.awt.headless=true)
刪除掉 -XX:+UseCompressedOops 即可
測試叢集
(1)建立一個 topic
kafka-topics.bat --create --zookeeper 127.0.0.1:2181 --replication-factor 1 --partitions 1 --topic test
(2)查看是否建立成功
kafka-topics.bat --list --zookeeper localhost:2181
(3)發送訊息
kafka-console-producer.bat --broker-list localhost:9092 --topic testThis is a message
(4)接收訊息
kafka-console-consumer.bat --zookeeper localhost:2181 --topic test --from-beginning
不同用戶端能接收到訊息,說明配置成功
kafka叢集搭建(windows環境下)