kafka是一个分布式消息队列,需要依赖ZooKeeper,请先安装好zk集群
kafka安装包解压
$ tar xf kafka_2.-0.9.0.1.tgz
$ mv kafka_2.-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= # 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:,node2:,node3:
规划有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:,node2:,node3: --topic test --replication-factor --partitions --create
$ kafka-topics.sh --zookeeper node1:,node2:,node3: --list
$ kafka-topics.sh --zookeeper node1:,node2:,node3: --describe --topic test
创建生成者和消费者
在任意节点上开启生成者
$ bin/kafka-console-producer.sh --broker-list node1:,node2:,node3: --topic test
可以在多个节点上开启多个消费者
$ bin/kafka-console-consumer.sh --zookeeper node1:,node2:,node3: --from-beginning --topic test
--from-beginning 表示从最早开始获取队列的数据
消费几条数据后,执行下面的语句,看看是否从头开始,以及不同partition返回数据无序性
$ bin/kafka-console-consumer.sh --zookeeper node1:,node2:,node3: --topic test
返回数据是无序的。