版本
- kafka_2.11-2.0.0
- zookeeper-3.4.5-cdh5.15.1
前提
安装好zookeeper并启动服务
配置config/server.properties
下载并解压后,在config目录下可以看到一个server.properties文件,我们需要配置一下几个参数:
#broker的编号,必须是唯一的,相当于主键
broker.id=0
#每个broker监听的端口
listeners=PLAINTEXT://:9090
#日志目录,默认目录在tmp下面,重启后就会被清空,所以要重新指定一个目录
log.dirs=/root/kafka-tmp/log
#zookeeper地址
zookeeper.connect=hlsijx:2181
因为我们要创建三个broker,因此这个配置文件也需要三份
server-1.properties
broker.id=1
listeners=PLAINTEXT://:9091
log.dirs=/root/kafka-tmp/log-1
zookeeper.connect=hlsijx:2181
server-2.properties
broker.id=2
listeners=PLAINTEXT://:9092
log.dirs=/root/kafka-tmp/log-2
zookeeper.connect=hlsijx:2181
server-3.properties
broker.id=3
listeners=PLAINTEXT://:9093
log.dirs=/root/kafka-tmp/log-3
zookeeper.connect=hlsijx:2181
启动Kafka
当前路径:$KAFKA_HOME/config,执行命令:
$ kafka-server-start.sh -daemon server-1.properties &
$ kafka-server-start.sh -daemon server-2.properties &
$ kafka-server-start.sh -daemon server-3.properties &
启动完成后可以看到有3个kafka进程
创建Topic
#创建一个topic,名字叫my-replicated-topic,连接到zookeeper,3副本,1分区
kafka-topics.sh --create --zookeeper hlsijx:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic
执行完成后会提示“Created topic “my-replicated-topic”.”再来看一下topic的描述信息:
kafka-topics.sh --describe --zookeeper hlsijx:2181 --topic my-replicated-topic
从图中我们可以看到,当前的Leader是2,副本在2,3,1上都有且三个节点都活着
生产&消费消息
生产消息:
kafka-console-producer.sh --broker-list hlsijx:9091,hlsijx:9092,hlsijx:9093 --topic my-replicated-topic
消费消息:
kafka-console-consumer.sh --bootstrap-server hlsijx:9091,hlsijx:9092,hlsijx:9093 --topic my-replicated-topic --from-beginning