kafka叢集搭建(windows環境下)

來源:互聯網
上載者:User

標籤: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環境下)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.