一、安装zookeeper集群
tar -zxvf apache-zookeeper-3.5.5-bin.tar.gz -C /usr/local/ cd /usr/local/ ln -s apache-zookeeper-3.5.5-bin zookeeper mv zoo_sample.cfg zoo.cfg vi zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 dataDir=/tmp/zookeeper/data dataLogDir=/tmp/zookeeper/log clientPort=2181 server.1=192.168.1.12:2888:3888 server.2=192.168.1.13:2888:3888 server.3=192.168.1.14:2888:3888 mkdir /tmp/zookeeper/data -p mkdir /tmp/zookeeper/log -p #在192.168.1.12上 echo 1 >/tmp/zookeeper/data/myid #在192.168.1.13上 echo 2 >/tmp/zookeeper/data/myid #在192.168.1.14上 echo 3 >/tmp/zookeeper/data/myid vi /etc/profile export ZOOKEEPER_HOME=/usr/local/zookeeper export PATH=$PATH:$ZOOKEEPER_HOME/bin source /etc/profile zkServer.sh start zkServer.sh status
二、安装Kafka集群
tar -zxvf kafka_2.11-2.2.1.tgz -C /usr/local/ cd /usr/local/ ln -s kafka_2.11-2.2.1 kafka cd /usr/local/kafka/config vi server.properties #broker.id不能相同 broker.id=1 listeners=PLAINTEXT://192.168.1.12:9092 log.dirs=/tmp/kafka-logs zookeeper.connect=192.168.1.12:2181,192.168.1.12:2181,192.168.1.12:2181 cd /usr/local/kafka/bin ./kafka-server-start.sh -daemon ../config/server.properties
三、Kafka常用命令
主题topic cd /usr/local/kafka/bin a.创建topic ./kafka-topics.sh --create --zookeeper 192.168.1.12:2181 --replication-factor 1 --partitions 1 --topic my-kafka-topic ./kafka-topics.sh --create --bootstrap-server 192.168.1.12:9092 --replication-factor 1 --partitions 1 --topic my-kafka-toptic1 #--bootstrap-server指定broker地址,可以写多个地址,用逗号分割,用法和--zookeeper相同 b.查看topic列表 ./kafka-topics.sh --list --zookeeper 192.168.1.13:2181 ./kafka-topics.sh --list --bootstrap-server 192.168.1.13:9092 c.如果需要查看topic的详细信息,需要使用describe命令 kafka-topics.sh --describe --zookeeper 192.168.1.12:2181 --topic test-topic d.#若不指定topic,则查看所有topic的信息 ./kafka-topics.sh --describe --zookeeper 192.168.1.12:2181 e.删除topic ./kafka-topics.sh --delete --zookeeper 192.168.1.12:2181 --topic my-kafka-topic ------------------------------------------- 生产者 ./kafka-console-producer.sh --broker-list 192.168.1.12:9092 --topic my-kafka-topic ------------------------------------------- 消费者 ./kafka-console-consumer.sh --bootstrap-server 192.168.1.12:9092 --topic my-kafka-topic # 如果需要从头开始接收数据,需要添加--from-beginning参数 ./kafka-console-consumer.sh --bootstrap-server 192.168.1.12:9092 --from-beginning --topic my-kafka-topic #指定消费者组 ./kafka-console-consumer.sh --bootstrap-server 192.168.1.12:9092 --topic my-kafka-toptic1 --group yingyong1 --from-beginning ######################################### ./kafka-topics.sh --describe --zookeeper 192.168.1.12:2181 Topic:my-kafka-topic5 PartitionCount:5 ReplicationFactor:2 Configs: Topic: my-kafka-topic5 Partition: 0 Leader: 3 Replicas: 2,3 Isr: 3,2 Topic: my-kafka-topic5 Partition: 1 Leader: 3 Replicas: 3,1 Isr: 3,1 Topic: my-kafka-topic5 Partition: 2 Leader: 1 Replicas: 1,2 Isr: 1,2 Topic: my-kafka-topic5 Partition: 3 Leader: 1 Replicas: 2,1 Isr: 1,2 Topic: my-kafka-topic5 Partition: 4 Leader: 3 Replicas: 3,2 Isr: 3,2 注:Isr(in-sync Replica)在同步的副本,Replicas指副本在哪个代理上 一个分区只能被一个消费者组中的一个消费者消费, 如果一个消费者组中有5个分区一个消费者,那么这个消费者会消费这五个分区 如果一个消费者组中有5个分区2个个消费者,那么第一个消费者会消费3个分区,另一个消费者会消费2个分区 如果一个消费者组中有5个分区6个个消费者,那么其中5个消费者会分别消费一个,而第六个消费者不会消费数据,当前五个中有退出的时候,第六个消费者才会消费数据 生产者和消费者在连接kafka时,既可以连接kafka服务器的地址,也可以连接zookeeper的地址,且地址可以写多个中间用逗号隔开即可