在《Kafka實戰-入門》一篇中,爲你們介紹了Kafka的相關背景、原理架構以及一些關鍵知識點,本篇博客爲你們來贅述一下Kafka Cluster的相關內容,下面是今天爲你們分享的目錄:html
下面開始今天的內容分享。apache
因爲Kafka Cluster須要依賴ZooKeeper(後面簡稱ZK)集羣來協同管理,因此這裏咱們須要事先搭建好ZK集羣,關於ZK的集羣搭建,你們能夠參考我寫的《配置高可用的Hadoop平臺》,這篇文章中我介紹瞭如何去搭建ZK,這裏就很少贅述,本篇博客爲你們介紹如何去搭建Kafka Cluster。bootstrap
因爲Kafka已經貢獻到Apache基金會了,咱們能夠到Apache的官方網站上去下載Kafka的基礎安裝包,下載地址以下所示:架構
Kafka安裝包 [下載地址]app
Kafka源代碼 [下載地址]oop
這裏,咱們直接使用官方編譯好的安裝包進行Kafka Cluster的安裝部署。下面咱們來開始Kafka Cluster的搭建部署。post
首先,咱們將下載好的Kafka基礎安裝包解壓,命令以下所示:學習
[hadoop@dn1 ~]$ tar -zxvf kafka_2.9.1-0.8.2.1.tgz
[hadoop@dn1 ~]$ cd kafka_2.9.1-0.8.2.1
[hadoop@dn1 ~]$ vi /etc/profile
export KAFKA_HOME=/home/hadoop/kafka_2.11-0.8.2.1 export PATH=$PATH:$KAFKA_HOME/bin
# the directory where the snapshot is stored. dataDir=/home/hadoop/data/zk # the port at which the clients will connect clientPort=2181 # disable the per-ip limit on the number of connections since this is a non-production config maxClientCnxns=0
# The id of the broker. This must be set to a unique integer for each broker. broker.id=0
注:這裏配置broker的時候,每臺機器上的broker保證惟一,從0開始。如:在另外2臺機器上分別配置broker.id=1,broker.id=2測試
# list of brokers used for bootstrapping knowledge about the rest of the cluster # format: host1:port1,host2:port2 ... metadata.broker.list=dn1:9092,dn2:9092,dn3:9092
# Zookeeper connection string # comma separated host:port pairs, each corresponding to a zk # server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002" zookeeper.connect=dn1:2181,dn2:2181,dn3:2181
至此,Kafka Cluster部署完成。網站
首先,在啓動Kafka集羣服務以前,確保咱們的ZK集羣已啓動,下面咱們啓動Kafka集羣服務。啓動命令以下所示:
[hadoop@dn1 kafka_2.11-0.8.2.1]$ kafka-server-start.sh config/server.properties &
注:其餘2個節點參照上述方式啓動。
另外,啓動其餘節點的時候,在最早開始啓動的節點會顯示其它節點加入的信息記錄,以下圖所示:
[hadoop@dn1 kafka_2.11-0.8.2.1]$ jps 2049 QuorumPeerMain 2184 Kafka 2233 Jps
在服務啓動後,咱們開始建立一個Topic,命令以下所示:
[hadoop@dn1 ]$ kafka-topics.sh --zookeeper dn1:2181,dn2:2181,dn3:2181 --topic test1 --replication-factor 3 --partitions 1 --create
而後,咱們查看該Topic的相關信息,命令以下所示:
[hadoop@dn1 ]$ kafka-topics.sh --zookeeper dn1:2181,dn2:2181,dn3:2181 --topic test1 --describe
預覽信息以下圖所示:
下面解釋一下這些輸出。第一行是對全部分區的一個描述,而後每一個分區都會對應一行,由於咱們只有一個分區因此下面就只加了一行。
下面咱們使用kafka的Producer生產一些消息,而後讓Kafka的Consumer去消費,命令以下所示:
[hadoop@dn1 ]$ kafka-console-producer.sh --broker-list dn1:9092,dn2:9092,dn3:9092 --topic test1
接着,咱們在另一個節點啓動消費進程,來消費這些消息,命令以下所示:
[hadoop@dn2 ]$ kafka-console-consumer.sh --zookeeper dn1:2181,dn2:2181,dn3:2181 --from-beginning --topic test1
消費記錄以下圖所示:
這裏,從上面的截圖信息能夠看出,在DN1節點上Kafka服務上Lead,咱們先將DN1節點的Kafka服務kill掉,命令以下:
[hadoop@dn1 config]$ jps 2049 QuorumPeerMain 2375 Jps 2184 Kafka [hadoop@dn1 config]$ kill -9 2184
而後,其餘節點立馬選舉出了新的Leader,以下圖所示:
下面,咱們來測試消息的生產和消費,以下圖所示:
經過測試,能夠發現,Kafka的HA特性仍是不錯的,擁有不錯的容錯機制。
這裏,在部署Kafka Cluster的時候,有些地方須要咱們注意,好比:在咱們啓動Kafka集羣的時候,確保ZK集羣啓動,另外,在配置Kafka配置文件信息時,確保ZK的集羣信息配置到相應的配置文件中,整體來講,配置還算較爲簡單,須要在部署的時候,仔細配置各個文件便可。
這篇博客就和你們分享到這裏,若是你們在研究學習的過程中有什麼問題,能夠加羣進行討論或發送郵件給我,我會盡我所能爲您解答,與君共勉!