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
返回数据是无序的。