簡介
Kafka 是一種高吞吐的分布式發布訂閱消息系統,能夠替代傳統的消息隊列用於解耦合數據處理,緩存未處理消息等,同時具有更高的吞吐率,支持分區、多副本、冗余,因此被廣泛用於大規模消息數據處理應用。Kafka 支持Java 及多種其它語言客戶端,可與Hadoop、Storm、Spark等其它大數據工具結合使用。
本教程主要介紹Kafka 在Centos 7上的安裝和使用,包括功能驗證和集群的簡單配置。
安裝JDK
Kafka 使用Zookeeper 來保存相關配置信息,Kafka及Zookeeper 依賴Java 運行環境,從oracle網站下載JDK 安裝包,解壓安裝:
$tar zxvf jdk-8u65-linux-x64.tar.gz $mv jdk1.8.0_65 java
也可以 yum install -y java-1.8.0-openjdk
設置Java 環境變量:
JAVA_HOME=/opt/java PATH=$PATH:$JAVA_HOME/bin export JAVA_HOME PATH
也可以選擇yum install安裝,相應設置環境變量。
安裝Kafka
從官網下載Kafka 安裝包,解壓安裝:
tar zxvf kafka_2.11-0.8.2.2.tgz mv kafka_2.11-0.8.2.2 kafka cd kafka
功能驗證
1.啟動Zookeeper
使用安裝包中的腳本啟動單節點Zookeeper 實例:
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties [2015-10-26 04:26:59,585] INFO Reading configuration from: config/zookeeper.properties (org.apache.zookeeper.server.quorum.QuorumPeerConfig)....
2.啟動Kafka 服務
使用kafka-server-start.sh 啟動kafka 服務:
bin/kafka-server-start.sh config/server.properties [2015-10-26 04:28:56,115] INFO Verifying properties (kafka.utils.VerifiableProperties) [2015-10-26 04:28:56,141] INFO Property broker.id is overridden to 0 (kafka.utils.VerifiableProperties)
3.創建topic
使用kafka-topics.sh 創建單分區單副本的topic test:
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
查看topic:
bin/kafka-topics.sh --list --zookeeper localhost:2181 test
4.產生消息
使用kafka-console-producer.sh 發送消息:
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test Hello world! Hello Kafka!
5.消費消息
使用kafka-console-consumer.sh 接收消息並在終端打印:
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning Hello world! Hello Kafka!
集群配置
單機多broker 集群配置
利用單節點部署多個broker。 不同的broker 設置不同的 id,監聽端口及日志目錄。 例如:
cp config/server.properties config/server-1.properties
編輯配置:
config/server-1.properties: broker.id=1 port=9093 log.dir=/tmp/kafka-logs-1
啟動Kafka服務:
bin/kafka-server-start.sh config/server-1.properties &
啟動多個服務,按上文類似方式產生和消費消息。
多機多broker 集群配置
分別在多個節點按上述方式安裝Kafka,配置啟動多個Zookeeper 實例。 例如: 在10.4.253.22,10.4.253.23,10.4.253.24三台機器部署,Zookeeper配置如下:
initLimit=5 syncLimit=2 server.1=10.4.253.22:2888:3888 server.2=10.4.253.23:2888:3888 server.3=10.4.253.24:2888:3888
分別配置多個機器上的Kafka服務 設置不同的broke id,zookeeper.connect設置如下:
zookeeper.connect=10.4.253.22:2181,10.4.253.23:2181,10.4.253.24:2181
啟動Zookeeper與Kafka服務,按上文方式產生和消費消息,驗證集群功能。