kafka是一個分散式消息隊列,需要依賴ZooKeeper,請先安裝好zk集群 kafka安裝包解壓 配置文件 規劃有3個節點,broker的id應該不同node1為broker.id=0node2為broker.id=1node3為broker.id=2 node1上複製kafka目錄到其他節點 ...
kafka是一個分散式消息隊列,需要依賴ZooKeeper,請先安裝好zk集群
kafka安裝包解壓
$ tar xf kafka_2.10-0.9.0.1.tgz $ mv kafka_2.10-0.9.0.1 /usr/kafka $ cd /usr/kafka
配置文件
server.properties # The id of the broker. This must be set to a unique integer for each broker. broker.id=0 # Zookeeper connection string (see zookeeper docs for details). # This is a 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". # You can also append an optional chroot string to the urls to specify the # root directory for all kafka znodes. zookeeper.connect=node1:2181,node2:2181,node3:2181
規劃有3個節點,broker的id應該不同
node1為broker.id=0
node2為broker.id=1
node3為broker.id=2
node1上複製kafka目錄到其他節點
$ scp -r /usr/kafka node2:/usr/ $ scp -r /usr/kafka node3:/usr/
node2、node3上替換broker.id
$ sed -i -e 's/broker.id=.*/broker.id=1/' /usr/kafka/config/server.properties $ sed -i -e 's/broker.id=.*/broker.id=2/' /usr/kafka/config/server.properties
可以配置環境變數,可選
export KAFKA_HOME=/usr/kafka
PATH=$PATH:$KAFKA_HOME/bin
啟動kafka
1、在3個節點啟動ZooKeeper
2、在3個節點啟動kafka
$ bin/kafka-server-start.sh config/server.properties
測試
創建話題,使用kafka-topics.sh
$ kafka-topics.sh --zookeeper node1:2181,node2:2181,node3:2181 --topic test --replication-factor 2 --partitions 3 --create $ kafka-topics.sh --zookeeper node1:2181,node2:2181,node3:2181 --list $ kafka-topics.sh --zookeeper node1:2181,node2:2181,node3:2181 --describe --topic test
創建生成者和消費者
在任意節點上開啟生成者
$ bin/kafka-console-producer.sh --broker-list node1:9092,node2:9092,node3:9092 --topic test
可以在多個節點上開啟多個消費者
$ bin/kafka-console-consumer.sh --zookeeper node1:2181,node2:2181,node3:2181 --from-beginning --topic test
--from-beginning 表示從最早開始獲取隊列的數據
消費幾條數據後,執行下麵的語句,看看是否從頭開始,以及不同partition返回數據無序性
$ bin/kafka-console-consumer.sh --zookeeper node1:2181,node2:2181,node3:2181 --topic test
返回數據是無序的。