1.安装

两个为同一个安装包
下载kafka.tgz安装包 http://mirrors.hust.edu.cn/apache/kafka/0.10.2.1/kafka_2.11-0.10.2.1.tgz

2.解压到指定目录
3.Kafka&zookeeper的配置

(1)配置zookeeper

vim config/zookeeper. properties

zookeeper对应版本的kafka kafka zookeeper配置_zookeeper


如上图,图中所示的两个地方分别是zookeeper的日志位置和zookeeper的端口,如需设置的,更改参数即可,如不需更改,默认即可。

(2)更改zookeeper的启动文件(一般按照默认即可)

vim bin/zookeeper-server-start.sh

zookeeper对应版本的kafka kafka zookeeper配置_vim_02


KAFKA_HEAP_OPTS是设置资源消耗选项,需根据自己服务器的实际情况来进行配置,如果设置的太大,会导致服务无法启动,如果设置的太小,会导致启动后程序的崩溃。这也是为什么安装kafka的机器不建议配置较低的原因。实际测试中,建议xmx和xms不小于256m,但也不要超过总内存大小的1/2。

(3)配置kafka

vim config/server.properties

zookeeper对应版本的kafka kafka zookeeper配置_kafka_03


id:当kafka为集群配置时,该id是用来区别不同的kafka,当kafka单机部署时,该字段默认即可,若集群部署,需分别设置不同的broker.id,并在zookeeper日志文件夹(默认为/tmp/zookeeper)下,生成内容为其broker.id的,文件名为myid的文件。例如,该kafka的broker.id为0,需在/tmp/zookeeper目录下生成内容为0的myid文件。

listeners:kafka的监听端口。但是这个并不是kafka与生产者和消费者交互的端口。早版本的kafka里,这项的名字为hosts。这项不可采用默认配置,需填上kafka本机的ip和端口号,否则会打不开端口,导致通信失败。

advertised.listeners:kafka与生产者和消费者交互的端口,通常设置成和listeners同样的端口。这项同样不可采用默认配置,需填上kafka本机的ip和端口号,否则会打不开端口,导致通信失败。#kafka的日志文件配置,可以默认,也可以重新指定

zookeeper对应版本的kafka kafka zookeeper配置_zookeeper对应版本的kafka_04

下图是zookeeper的地址,单节点的话,就是本机的ip地址+zookeeper端口,如果是集群部署,这里需填上所有的zookeeper地址,如:

zookeeper.connect = 192.168.1.23:2181, 192.168.1.20.2181, 192.168.1.21:2181

zookeeper对应版本的kafka kafka zookeeper配置_kafka_05

(4)kafka启动文件配置(如有需要更改,一般默认即可)

vim bin/kafka-server-start.sh

zookeeper对应版本的kafka kafka zookeeper配置_zookeeper对应版本的kafka_06


和zookeeper配置文件一样,也是KAFKA_HEAP_OPTS字段的配置。建议xmx和xms不小于256m,但也不要超过总内存大小的1/2。

4.kafka&zookeeper测试

(1)启动zookeeper
./bin/zookeeper-server-start.sh config/zookeeper.properties

(2)启动kafka
./bin/kafka-server-start.sh config/server.properties

(3) 创建一个topic :test

bin/kafka-topics.sh --create --zookeeper 127.0.0.1:2181 --replication-factor 1 --partitions 1 --topic test

zookeeper对应版本的kafka kafka zookeeper配置_zookeeper对应版本的kafka_07


(4) 查看消息主题是否创建成功

bin/kafka-topics.sh --list --zookeeper 127.0.0.1:2181

zookeeper对应版本的kafka kafka zookeeper配置_kafka_08


(5) 查看主题详情

bin/kafka-topics.sh --describe --zookeeper 127.0.0.1:2181 --topic test

zookeeper对应版本的kafka kafka zookeeper配置_vim_09


(6) 启动消费者(读消息)

./bin/kafka-console-consumer.sh --zookeeper 127.0.0.1:2181 --topic test --from-beginning

./bin/kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test --from-beginning (新)

(7) 启动生产者(发消息)

./bin/kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic test

启动后,输入消息:

zookeeper对应版本的kafka kafka zookeeper配置_zookeeper_10


在(6)中启动的消费者中,会输出消息:

zookeeper对应版本的kafka kafka zookeeper配置_kafka_11


(8)删除主题

bin/kafka-topics.sh --zookeeper 127.0.0.1:2181 --delete --topic test

zookeeper对应版本的kafka kafka zookeeper配置_kafka_12


注意:如果kafka启动时加载的配置文件中server.properties没有配置delete.topic.enable=true ,那么此时的删除并不是真正的删除,而是把topic标记为:marked for deletion

此时,若果想真正删除它,可以登录zookeeper客户端,进入终端后,删除相应的节点