- Zookeeper 3.4.8
- Kafka 2.11-0.10.2.1
- 2.11 表示 Scala 的版本,0.10 表示 Kafka 的版本
data
是本机的 hostname,在所有配置 hostname 的地方都可以配成本机的 IP 地址
Zookeeper
解压安装包
1 | cd /opt |
配置系统环境变量,配置完成后使用 source
命令生效
1 | vim /etc/profile |
1 | export ZOOKEEPER_HOME=/root/zookeeper-3.4.8 |
配置
1 | cd /root/zookeeper-3.4.8 |
将 dataDir
改为 /root/zookeeper-3.4.8/data
,默认情况是 /tmp
目录下,每次 Linux 系统重启后 tmp
目录是要清空的
启动(由于配置了环境变量,这条命令可以在任何地方使用,但是好像启动完成后会在当前目录有一个 zookeeper.out 文件,强迫症患者谨慎选择启动目录)
1 | zkServer.sh start |
出现以上信息表示 Zookeeper 启动成功,这时候可以使用 jps
命令查看进程,其中标红处的就是 Zookeeper 进程,默认监听 2181 端口
还可以使用 zkServer.sh status 命令查看 zookeeper 的运行状态
Kafka
解压安装包
1 | cd /opt |
配置系统环境变量
1 | vim /etc/profile |
1 | export KAFKA_HOME=/root/kafka_2.11-0.10.2.1 |
配置
1 | cd /root/kafka_2.11-0.10.2.1 |
需要配置三处
1 在 broker.id下
添加一行配置,将 host.name
配置成本机的 hostname
1 | host.name=data |
2 修改 log.dirs
的配置为之前创建的文件夹路径
1 | /root/kafka_2.11-0.10.2.1/kafka-logs |
3 将 zookeeper.connect
改为 data:2181
,其实对于 zookeeper 和 kafka 在同一台机器上的情况来说是一回事
启动
1 | kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties & |
jps
查看进程
测试
创建 topic
1 | kafka-topics.sh --create --zookeeper data:2181 --replication-factor 1 --partitions 1 --topic hello_topic |
查看当前 topic 列表,这里显示出了刚刚创建的 topic:hello_topic
1 | kafka-topics.sh --list --zookeeper data:2181 |
创建一个生产者,向 hello_topic 发送消息
1 | kafka-console-producer.sh --broker-list data:9092 --topic hello_topic |
创建一个消费者,这需要另起一个终端
1 | kafka-console-consumer.sh --bootstrap-server data:9092 --topic hello_topic --from-beginning |
注意生产者和消费者启动完成后会停留,这时候可以在生产者终端输入一些任意的文字,消息会很快的发送到消费者终端那里
单节点多 broker 的配置
上面的过程中是在单个节点上配置了单个 broker,如何在单个节点上配置多个 broker 呢?
- 打开 server.properties 中关于
listeners=PLAINTEXT://:9092
的配置 - 三个配置文件拷贝自之前修改过的 server.properties,其中需要保持三处不同
- cp server.properties server-{n}.properties
- broker.id
- listeners=PLAINTEXT://:9092 最后的端口
- log.dirs=/root/kafka_2.11-0.10.2.1/kafka-logs 日志路径
- 启动时只需要指定各自 broker 的配置文件即可
- kafka-server-start.sh -daemon $KAFKA_HOME/config/server-{n}.properties &