安装前准备
环境准备
云服务器 3 台(Centos 7)
安装包下载
Apache Kafka 2.12-2.4.1
scala 版本号 - kafka 版本号,即 scala 的版本号为 2.12 ,kafka 的版本号为 2.4.1
服务器域名映射
vim /etc/hosts
172.17.0.8 node1
172.17.20.14 node2
172.17.30.12 node3
zookeeper 环境准备
zookeeper 集群搭建
在 3 台服务器上搭建好 zookeeper 集群并启动
集群搭建
上传安装包并解压
cd /opt/server/
tar -xvzf kafka_2.12-2.4.1.tgz -C /opt/server/
修改配置文件
cd /opt/server/kafka_2.12-2.4.1/config
vim server.properties
broker.id=1
log.dirs=/opt/server/kafka_2.12-2.4.1/data
zookeeper.connect=node1:2181,node2:2181,node3:2181
配置环境变量
vim /etc/profile
export KAFKA_HOME=/opt/server/kafka_2.12-2.4.1
export PATH=:$PATH:${KAFKA_HOME}
source /etc/profile
集群启动
启动
cd /opt/server/kafka_2.12-2.4.1
nohup bin/kafka-server-start.sh config/server.properties &
集群操作
查看 topic 列表
bin/kafka-topics.sh --bootstrap-server node1:9092 --list
 创建 topic
bin/kafka-topics.sh --create --bootstrap-server node1:9092 --topic test
删除 topic
bin/kafka-topics.sh --delete --bootstrap-server node1:9092 --topic test
生产者生产消息
执行后,可以多次输入,每次回车,代表生产一条消息,Ctrl + C 则结束
bin/kafka-console-producer.sh --broker-list node1:9092 --topic test
消费者消费消息
执行后,等待生产者生产消息,生产者每生产一条则显示一条,Ctrl + C 则结束
bin/kafka-console-consumer.sh --bootstrap-server node1:9092 --topic test --from-beginning
Kafka 基准测试
基准测试(benchmark testing)说明
基准是一种测量和评估软件性能指标的活动。我们可以通过基准测试,了解到软件、硬件的性能水平。主要测试负载的执行时间、传输速度、吞吐量、资源占用率等
--topic topic的名字
--num-records 总共指定生产数据量(默认5000W)
--throughput 指定吞吐量——限流(-1不指定)
--record-size record数据大小(字节)
--producer-props bootstrap.servers=node1:9092,node2:9092,node3:9092 acks=1 指定Kafka集群地址,ACK模式
--broker-list 指定kafka集群地址
--topic 指定topic的名称
--fetch-size 每次拉取的数据大小
--messages 总共要消费的消息个数
基准测试总结 ① 生产者
指标 | 1分区1副本 | 1分区3副本 | 3分区1副本 |
---|
吞吐量 | 3.03w records/s | 2.84w records/s | 3.58 w records/s | 吞吐速率 | 28.93 MB/s | 27.04 MB/s | 34.17 MB/s |
② 消费者
指标 | 1分区1副本 | 1分区3副本 | 3分区1副本 |
---|
每秒消费的数据量 | 32.20 MB/s | 28.59 MB/s | 37.94 MB/s | 每秒消费的条数 | 3.38 w 条/s | 3.00w 条/s | 3.98w 条/s |
分区相同,副本不同:生产者随着副本增多吞吐量降低;消费者随着副本增多消费速度降低 (副本尽量少)
副本相同,分区不同:生产者随着分区增多吞吐量提高;消费者随着分区增多消费速度提高 (分区尽量多)
基准测试(1个分区1个副本)
① 启动 Kafka 集群
② 创建一个1个分区1个副本的 topic: benchmark
bin/kafka-topics.sh --zookeeper node1:2181 --create --topic benchmark --partitions 1 --replication-factor 1
③ 同时运行生产者、消费者基准测试程序(测试50W的消息)
bin/kafka-producer-perf-test.sh --topic benchmark --num-records 500000 --throughput -1 --record-size 1000 --producer-props bootstrap.servers=node1:9092,node2:9092,node3:9092 acks=1
bin/kafka-consumer-perf-test.sh --broker-list node1:9092,node2:9092,node3:9092 --topic benchmark --fetch-size 1048576 --messages 500000
④ 测试结果   基准测试(3个分区1个副本)
① 启动 Kafka 集群
② 创建一个3个分区1个副本的 topic: benchmark
bin/kafka-topics.sh --zookeeper node1:2181 --create --topic benchmark --partitions 3 --replication-factor 1
③ 同时运行生产者、消费者基准测试程序(测试500W的消息)
bin/kafka-producer-perf-test.sh --topic benchmark --num-records 500000 --throughput -1 --record-size 1000 --producer-props bootstrap.servers=node1:9092,node2:9092,node3:9092 acks=1
bin/kafka-consumer-perf-test.sh --broker-list node1:9092,node2:9092,node3:9092 --topic benchmark --fetch-size 1048576 --messages 500000
④ 测试结果  
基准测试(1个分区3个副本)
① 启动 Kafka 集群
② 创建一个1个分区3个副本的 topic: benchmark
bin/kafka-topics.sh --zookeeper node1:2181 --create --topic benchmark --partitions 1 --replication-factor 3
③ 同时运行生产者、消费者基准测试程序(测试500W的消息)
bin/kafka-producer-perf-test.sh --topic benchmark --num-records 500000 --throughput -1 --record-size 1000 --producer-props bootstrap.servers=node1:9092,node2:9092,node3:9092 acks=1
bin/kafka-consumer-perf-test.sh --broker-list node1:9092,node2:9092,node3:9092 --topic benchmark --fetch-size 1048576 --messages 500000
④ 测试结果  
|