1. 程式人生 > >Kafka叢集完全分散式安裝

Kafka叢集完全分散式安裝

一、上傳、解壓kafka壓縮包

將kafka壓縮包上傳到Linux系統中,並進行解壓

[[email protected] software]# pwd
/home/software
[[email protected] software]# ll
總用量 48352
drwxr-xr-x  8 uucp    143     4096 10月  8 11:41 jdk1.8
drwxr-xr-x  8 root  root      4096 11月 28 10:47 kafka_2.11-1.0.0
-rw-r--r--  1 root  root  49475271 11月 26 2017 kafka_2.11-1.0.0.tgz
drwxr-xr-x  7 root  root      4096 11月 28 14:56 kafka-manager-1.3.2.1
[
[email protected]
software]#

 

二、修改配置檔案

進入到kafka的目錄下的conf目錄下,修改server.properties檔案

[[email protected] config]# pwd
/home/software/kafka_2.11-1.0.0/config
[[email protected] config]# ll
總用量 64
-rw-r--r-- 1 root root  906 10月 27 2017 connect-console-sink.properties
-rw-r--r-- 1 root root  909 10月 27 2017 connect-console-source.properties
-rw-r--r-- 1 root root 5807 10月 27 2017 connect-distributed.properties
-rw-r--r-- 1 root root  883 10月 27 2017 connect-file-sink.properties
-rw-r--r-- 1 root root  881 10月 27 2017 connect-file-source.properties
-rw-r--r-- 1 root root 1111 10月 27 2017 connect-log4j.properties
-rw-r--r-- 1 root root 2730 10月 27 2017 connect-standalone.properties
-rw-r--r-- 1 root root 1221 10月 27 2017 consumer.properties
-rw-r--r-- 1 root root 4727 10月 27 2017 log4j.properties
-rw-r--r-- 1 root root 1919 10月 27 2017 producer.properties
-rw-r--r-- 1 root root 6908 11月 28 10:44 server.properties
-rw-r--r-- 1 root root 1032 10月 27 2017 tools-log4j.properties
-rw-r--r-- 1 root root 1023 10月 27 2017 zookeeper.properties
[
[email protected]
config]# vim server.properties

修改如下配置(port沒有的話,需要自己新增)

broker.id=1

port=9092

log.dirs=/home/software/kafka_2.11-1.0.0/tmp

zookeeper.connect=hadoop1:2181,hadoop2:2181,hadoop3:2181

 

將kafka_2.11-1.0.0目錄發到hadoop2和hadoop3對應的目錄下

[
[email protected]
software]# pwd
/home/software
[[email protected] software]# scp -r kafka_2.11-1.0.0 [email protected]:/home/software/

修改server.properties檔案,修改broker.id(分別為2和3,叢集內的所有機器broker.id值不能一樣)

 

三、啟動

  • 啟動zookeeper,在各個機器的zookeeper的bin目錄下執行:./zkServer.sh start
[[email protected] bin]# pwd
/home/software/zookeeper/bin
[[email protected] bin]# ./zkServer.sh start
  • 啟動kafka,在各個機器的kafka的bin目錄下執行:./kafka-server-start.sh ../config/server.properties
[[email protected] bin]# pwd
/home/software/kafka_2.11-1.0.0/bin
[[email protected] bin]# ./kafka-server-start.sh ../config/server.properties

 

四、測試

在一個節點(本文中選擇hadoop1節點)的kafka的bin目錄下執行以下操作

  • 建立一個擁有2個副本的topic
[[email protected] bin]# pwd
/home/software/kafka_2.11-1.0.0/bin
[[email protected] bin]# ./kafka-topics.sh --create --zookeeper hadoop1:2181 --replication-factor 2 --partitions 1 --topic park

--replication-factor:副本的數量

--partition:分割槽數

--topic:主題

  • 檢視主題
[[email protected] bin]# pwd
/home/software/kafka_2.11-1.0.0/bin
[[email protected] bin]# ./kafka-topics.sh --list --zookeeper hadoop1:2181
__consumer_offsets
park
  • 檢視每個節點的資訊

[[email protected] bin]# pwd
/home/software/kafka_2.11-1.0.0/bin
[[email protected] bin]# ./kafka-topics.sh --describe --zookeeper hadoop1:2181 --topic park
Topic:park    PartitionCount:1    ReplicationFactor:2    Configs:
    Topic: park    Partition: 0    Leader: 2    Replicas: 3,2    Isr: 2,3

可以看到,主題名為park;分割槽數量為1;副本數量為2;leader為2,對應hadoop2

  • 啟動生產者,向topic傳送訊息

[[email protected] bin]# pwd
/home/software/kafka_2.11-1.0.0/bin
[[email protected] bin]# ./kafka-console-producer.sh --broker-list hadoop1:9092,hadoop2:9092,hadoop3:9092 --topic park

>

  • 啟動消費者,從topic中消費訊息

[[email protected] bin]# pwd
/home/software/kafka_2.11-1.0.0/bin
[[email protected] bin]# ./kafka-console-consumer.sh --zookeeper hadoop1:2181 --topic park
Using the ConsoleConsumer with old consumer is deprecated and will be removed in a future major release. Consider using the new consumer by passing [bootstrap-server] instead of [zookeeper].

 

  • 生產消費過程

生產者每生產一條資料,消費者便消費一條資料

 

五、試驗:容錯性

將hadoop2的kafka停掉(可以使用kill -9 xxx或其他方法),然後檢視節點資訊

[[email protected] bin]# pwd
/home/software/kafka_2.11-1.0.0/bin
[[email protected] bin]# jps
1937 QuorumPeerMain
1993 Kafka
2319 Jps
[[email protected] bin]# kill -9 1993
[[email protected] bin]# ./kafka-topics.sh --describe --zookeeper hadoop1:2181 --topic park
Topic:park    PartitionCount:1    ReplicationFactor:2    Configs:
    Topic: park    Partition: 0    Leader: 3    Replicas: 3,2    Isr: 3
[[email protected] bin]#

可以看到,此時leader變成了hadoop3

重新啟動hadoop2的kafka,leader不變,仍然是hadoop3

[[email protected] bin]# jps
1937 QuorumPeerMain
2874 Jps
2575 Kafka
[[email protected] bin]# ./kafka-topics.sh --describe --zookeeper hadoop1:2181 --topic park
Topic:park    PartitionCount:1    ReplicationFactor:2    Configs:
    Topic: park    Partition: 0    Leader: 3    Replicas: 3,2    Isr: 3,2
[[email protected] bin]#

可以看到,某一個機器宕機了之後,叢集仍然正常工作,從而保證了kafka的容錯性。

 

更多詳細內容,請參考Kafka的官方文件:https://kafka.apache.org/documentation/