kafka的搭建

kafka的搭建

搭建前說明

  • 這裏就不說廢話去具體介紹kafka是什麼了,只要知道他是一個分佈式的隊列,作用是緩衝消息的就行了。
  • kafka的運行是基於zookeeper的,所以運行先要裝一個zookeeper。
  • 版本說明:zookeeper-3.4.13、kafka_2.12-2.2.0
  • 說明:本文采用的是自己下載安裝的方法進行搭建的。

搭建前準備

  • 需要安裝jdk,版本最好在1.8及以上。
  • 三臺機器,假如我這裏準備的三臺機器的hostname分別是0.0.0.198、0.0.0.206、0.0.0.209(0.0.0只是個說明,以大家實際的寫法爲主)
  • 此時/etc/hosts爲
0.0.0.209 server01
0.0.0.198 server02
0.0.0.206 server03
  • ps:kafka的搭建其實不需要這些,只是集羣的搭建,還是希望大家保持一致

zookeeper的安裝

進入/opt目錄,本文所有的包都安裝在opt目錄下

  • 下載zookeeper
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
  • 解壓文件
tar -zxvf zookeeper-3.4.13.tar.gz
  • 進入zookeeper-3.4.13 裏面的conf目錄裏面,創建zoo.cfg,在裏面寫
tickTime = 2000 
initLimit=10
syncLimit=5
dataDir = /opt/zookeeper/zkdata
dataLogDir=/opt/zookeeper/zkdatalog 
clientPort = 2181
server.1=0.0.0.209:2888:3888
server.2=0.0.0.198:2888:3888
server.3=0.0.0.206:2888:3888
  • 如上的配置文件所示,還需要創建兩個目錄,/opt/zookeeper/zkdata/opt/zookeeper/zkdatalog,這兩個目錄是用於存儲管理的數據和日誌的。
  • 進入/opt/zookeeper/zkdata目錄,創建文件myid,每個myid裏面寫各自對應的節點id,即123

zookeeper的測試

做完了上述步驟,zookeeper就算是安裝完成了。
下面就要對其進行一些測試,以保證安裝的順利進行。
進入zookeeper-3.4.13目錄,運行命令bin/zkCli.sh -server 127.0.0.1:2181,查看返回

Connecting to localhost:2181
log4j:WARN No appenders could be found for logger (org.apache.zookeeper.ZooKeeper).
log4j:WARN Please initialize the log4j system properly.
Welcome to ZooKeeper!
JLine support is enabled
[zkshell: 0]

kafka的安裝

在安裝完zookeeper後,接下來就是安裝kafka了。
這裏有些話要說下,由於三臺機器安裝kafka的時候,配置信息會有所不同,所以下面講的0.0.0.198上面的安裝步驟,其他兩臺的具體步驟會在下面說明。

  • 下載
wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.2.0/kafka_2.12-2.2.0.tgz
  • 解壓,並進入kafka_2.12-2.2.0目錄裏面
  • 進入config目錄裏面,然後編輯server.properties,具體的修改如下(我把註釋部分給去掉了,修改的時候要看仔細)。
broker.id=3
listeners=PLAINTEXT://:9092
port=9092
host.name=10.25.1.206

advertised.host.name=10.25.1.206
advertised.port=9092

num.network.threads=3
num.io.threads=8

socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600

log.dirs=/opt/kafka/kafkalogs/

num.partitions=3
num.recovery.threads.per.data.dir=1

offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1

log.retention.hours=168

message.max.byte=5242880
default.replication.factor=2
replica.fetch.max.bytes=5242880

log.segment.bytes=1073741824
log.retention.check.interval.ms=300000

zookeeper.connect=10.25.1.209:2181,10.25.1.198:2181,10.25.1.206:2181
zookeeper.connection.timeout.ms=6000

group.initial.rebalance.delay.ms=0
delete.topic.enable=true
  • 和之前的zookeeper一樣,這裏也配置了log.dirs,所以要創建目錄/opt/kafka/kafkalogs/

其他兩臺機器的安裝

其他兩臺的步驟基本和198的一致,區別在於以下幾點

  • broker.id 不同,這個id對應的是zookeeper的myid的值
  • host.name 不同,要修改成各自機器對應的hostname

kafka的測試

當你完成上述步驟之後,就代表着你的zookeeper和kafka集羣搭建完成了,下面就是進行一些測試,來看看kafka的安裝是否順利。

  • 啓動kafka
bin/kafka-server-start.sh config/server.properties
  • 創建主題
    讓我們創建一個名爲“test”的主題,它只包含一個分區,只有一個副本
bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test

如果我們運行list topic命令,我們現在可以看到該主題:

bin/kafka-topics.sh --list --bootstrap-server localhost:9092
test
  • 發送消息
    Kafka附帶一個命令行客戶端,它將從文件或標準輸入中獲取輸入,並將其作爲消息發送到Kafka集羣,運行生產者,然後在控制檯中鍵入一些消息以發送到服務器。
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
This is a message
This is another message
  • 消費消息
    Kafka還有一個命令行使用者,它會將消息轉儲到標準輸出。
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
This is a message
This is another message
  • 以上,如果你能正確的消費到信息,那麼,你的kafka就搭建成功了

特別說明

這裏給大家分享一個經驗,我之前就是因爲不知道這個,花了很多很多的冤枉時間。
就是在你修改了kafka的配置文件,或者重啓的時候,想要刪除之前的topic歷史數據,又或者其他的需要重啓的信息的時候,這個時候有一個很關鍵的注意點:就是要刪除kafka和zookeeper的歷史數據,其中刪除zookeeper/*裏面的歷史信息特別關鍵,不然到時候很容易出現producer上傳信息,但是consumer卻消費不到的情景!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章