一、Kafka 集羣部署
Kafka是一種分佈式的發佈(producer)/訂閱(consumer)的消息系統,並支持實時和離線的數據處理、可擴展、持久的。上一次已經對kafka做了介紹,今天我們介紹如何部署、創建主題併發布消息和訂閱消息。
1、兩個虛擬機:192.168.2.200、192.168.2.201
2、kafka下載地址:http://kafka.apache.org/downloads ,我下載的是最新版本kafka_2.12-0.10.2.1.tgz
3、對兩個虛擬機分別解壓
> tar -xzf kafka_2.12-0.10.2.1.tgz
> cd kafka_2.12-0.10.2.1.tgz
4、配置 config/server.properties 文件
broker.id=200 / broker.id=201
zookeeper.connect=192.168.2.200:2181,192.168.2.201:2181
broker.id:每一個broker在集羣中的唯一表示,要求是正數。
zookeeper.connect:zookeeper集羣的地址,可以是多個,多個之間用逗號分割。
5、Kafka依賴zookeeper,kafka的集羣的meta信息保存在zookeeper上,zookeeper管理consumer的offset,通過zookeeper的分佈式系統協調來保證Kafka 集羣的穩定性。Zookeeper的安裝配置、並啓動zookeeper
6、zookeeper集羣先啓動,然後啓動192.168.2.200、192.168.2.201虛擬機上的kafka的server
>bin/kafka-server-start.sh config/server.properties &
創建主題併發布消息和訂閱消息
二、創建主題
創建了主題名my-test-topic,2個分區,一個副本
>bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 2 --topic my-test-topic
主題信息
1、查看哪些主題列表
>bin/kafka-topics.sh --list --zookeeper localhost:2181
2、具體查看某個主題的描述信息
>bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-test-topic
第一行描述了my-test-topic主題的信息、正如我們之前的創建的兩個分區、一個副本。接下去每一個描述對應的各個分區的情況,有多少個分區就有對應幾行。
Leader:負責處理消息的讀和寫,Leader是從所有節點中隨機選擇的.
Replicas:分區對應的副本。
Isr:副本所在的server 節點。
三、發佈消息和訂閱消息
1、發佈消息
>bin/kafka-console-producer.sh --broker-list localhost:9092 --topic my-test-topic
1)查看發佈者
>./bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list localhost:9092 --topic my-test-topic
my-test-topic:1:1
my-test-topic:0:1
2、訂閱消息
>bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic my-test-topic --from-beginning
1)查看訂閱描述信息
>bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --consumer.config group.id:test-consumer-group --topic my-test-topic --from-beginning
[2017-05-20 08:35:26,396] WARN WARNING: ConsumerOffsetChecker is deprecated and will be dropped in releases following 0.9.0. Use ConsumerGroupCommand instead. (kafka.tools.ConsumerOffsetChecker$)
Exiting due to: org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode for /consumers/test-consumer-group/offsets/my-test-topic/0.
在0.9.0.版本後對kafka.tools.ConsumerOffsetChecker命令就不在支持了。
2)查看消費組
>bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list
3)查看具體的消費者信息
>bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server localhost:9092 --describe --group console-consumer-44096
4)我們在消費時指定消費組,config/consumer.properties配置的group.id
>bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --consumer.config config/consumer.properties --topic my-test-topic --from-beginning
五、刪除主題
1、刪除Broker
>jps
>Kill -9 進程ID
2、刪除主題
>bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic my-test-topic