Kafka集羣部署與示例

1 Kafka Cluster的部署

  因爲Kafka 集羣須要依賴ZooKeeper集羣,因此這裏咱們須要事先搭建好ZK集羣(可與kafka集羣分離),我這裏kafka和zk並無安在同一機器上,而是直接使用的hadoop集羣裏的zk。bootstrap

  server列表
kafka集羣 slave4,slave5,slave6
zookeeper集羣 master1,master2,slave1

 

  首先,咱們將下載好的Kafka安裝包kafka_2.9.1解壓,命令以下所示:app

  • 解壓Kafka到slave4
[hadoop@slave4~]$ tar -zxvf kafka_2.9.1-0.8.2.1.tgz
  • 進入到Kafka解壓目錄
[hadoop@slave4~]$ cd kafka_2.9.1-0.8.2.1
  • 配置環境變量
[hadoop@slave4~]$ vi /etc/profile
export KAFKA_HOME=/home/hadoop/kafka_2.9.1-0.8.2.1
export PATH=$PATH:$KAFKA_HOME/bin
  • 配置Kafka的zookeeper.properties 
# 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
  • 配置server.properties
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=0

# Zookeeper connection string
# comma separated host:port pairs, each corresponding to a zk
zookeeper.connect=master1:2181,master2:2181,slave1:2181

  注:這裏配置broker的時候,每臺機器上的broker保證惟一,從0開始。如:在另外2臺機器上分別配置broker.id=1,broker.id=2oop

  • 配置producer.properties
# list of brokers used for bootstrapping knowledge about the rest of the cluster
# format: host1:port1,host2:port2 ...
metadata.broker.list=slave4:9092,slave5:9092,slave6:9092
  • 配置consumer.properties
# 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=master1:2181,master2:2181,slave1:2181

  至此,Kafka 集羣部署完成。學習

2. kafka集羣簡單例子測試

啓動

  首先,在啓動Kafka集羣服務以前,確保咱們的ZK集羣已啓動,下面咱們啓動Kafka集羣服務。啓動命令以下所示:測試

[hadoop@slave4 kafka_2.11-0.8.2.1]$ kafka-server-start.sh config/server.properties &

  注:其餘2個節點參照上述方式啓動。this

  另外,啓動其餘節點的時候,在最早開始啓動的節點會顯示其它節點加入的信息記錄。spa

驗證啓動進程

[hadoop@slave4 kafka_2.11-0.8.2.1]$ jps
2049 QuorumPeerMain
2184 Kafka
2233 Jps

建立Topic

  在服務啓動後,咱們開始建立一個Topic,命令以下所示:.net

[hadoop@slave4 ]$ kafka-topics.sh --zookeeper master1:2181,master2:2181,slave1:2181 --topic test1 --replication-factor 3 --partitions 1 --create

  咱們能夠查看該Topic的相關信息,命令以下所示:rest

[hadoop@slave4 ]$ kafka-topics.sh --zookeeper master1:2181,master2:2181,slave1:2181 --topic test1 --describe

  下面解釋一下這些輸出。第一行是對全部分區的一個描述,而後每一個分區都會對應一行,由於咱們只有一個分區因此下面就只加了一行。code

  • Leader:負責處理消息的讀和寫,Leader是從全部節點中隨機選擇的。
  • Replicas:列出了全部的副本節點,無論節點是否在服務中。
  • Isr:是正在服務中的節點

生產消息

  下面咱們使用kafka的Producer生產一些消息,而後讓Kafka的Consumer去消費,命令以下所示:

[hadoop@slave4 ]$ kafka-console-producer.sh --broker-list slave4:9092,slave5:9092,slave6:9092 --topic test1

消費消息

  接着,咱們在另一個節點啓動消費進程,來消費這些消息,命令以下所示:

[hadoop@slave5 ]$ kafka-console-consumer.sh --zookeeper master1:2181,master2:2181,slave1:2181 --from-beginning --topic test1

  消費記錄以下圖所示:

 

3.HA特性

  這裏,從上面的截圖信息能夠看出,在slave4節點上Kafka服務是Lead,咱們先將slave4節點的Kafka服務kill:

[hadoop@slave4 config]$ jps
2049 QuorumPeerMain
2375 Jps
2184 Kafka
[hadoop@slave4 config]$ kill -9 2184

  而後,其餘節點立馬選舉出了新的Leader,以下圖所示:

  下面,咱們來測試消息的生產和消費,以下圖所示:

  • 生產消息

  • 消費消息

  經過測試,能夠發現,Kafka的HA特性仍是不錯的,擁有不錯的容錯機制。

 

 

如下是kafka技術分享系列目錄,這個比較全,kafka能學習的估計都在裏面了

http://blog.csdn.net/lizhitao/article/details/39499283

相關文章
相關標籤/搜索