如何通过Kafka在Ubuntu上轻松实现大数据处理性能的飞跃测试?
- 内容介绍
- 文章标签
- 相关推荐
1. 在 Ubuntu 上打造 Kafka 的黄金实验室
想象一下 当你在 Ubuntu 的终端里敲下第一行命令,整个大数据处理的世界瞬间亮起了灯塔。这里的每一次敲击, 试试水。 都像是为一场性能飞跃埋下伏笔。下面我们一步步搭建,让你的机器从“普通”变成“极速”。
1.1 安装 JDK —— 为 Kafka 注入血液
Kafka 是用 Java 写的, 没有 Java,Kafka 只能在原地打转。推荐使用 OpenJDK 17,它的稳定性和新特性恰好匹配 Kafka 最新版。
sudo apt-get update sudo apt-get install -y openjdk-17-jdk java -version # 确认安装成功
1.2 拉取并解压 Kafka 包 —— 把宝藏装进本地磁盘
从官方镜像下载最新的稳定版,解压到 /opt/kafka 目录。 要我说... 保持目录结构完整,这样后续脚本才能顺畅调用。
wget https://downloads.apache.org/kafka/3.4.0/kafka_2.13-3.4.0.tgz sudo mkdir -p /opt/kafka sudo tar -xzf kafka_2.13-3.4.0.tgz -C /opt/kafka --strip-components=1
1.3 启动 Zookeeper 与 Broker —— 双剑合璧, 方能独步江湖
Zookeeper 是 Kafka 的守护神,先把它唤醒;接着点燃 Broker,让它开始吞吐信息。
cd /opt/kafka bin/zookeeper-server-start.sh config/zookeeper.properties & bin/kafka-server-start.sh config/server.properties &
1.4 创建测试 Topic —— 为性能测试铺路
Topic 就像赛道, 分区越多、复制因子越高,竞争越激烈,后来啊也更真实,开搞。。
bin/kafka-topics.sh --create \
--bootstrap-server localhost:9092 \
--replication-factor 1 \
--partitions 6 \
--topic perf-test
2. 性能测试利器:官方脚本 vs 社区工具
Kafka 自带两把“刀”:kafka-producer-perf-test.sh 与 kafka-consumer-perf-test.sh。 闹笑话。 如果你想要更细粒度的指标,可以引入 Confluent 的 kcat 或者 librdkafka 的 rdkafka_performance。
2.1 Producer 性能压测——让写入成为狂飙的快感
下面这条指令会向 perf-test 推送 5 百万条、 每条 1024 字节的大礼包, 本质上... 并且不限制吞吐速率,让硬件极限自行展现。
bin/kafka-producer-perf-test.sh \
--topic perf-test \
--num-records 5000000 \
--record-size 1024 \
--throughput -1 \
--producer-props bootstrap.servers=localhost:9092 acks=all linger.ms=5 batch.size=65536
2.2 Consumer 性能压测——让读取同样沸腾起来
消费端可以并行启动多个线程,以检验 Broker 在高并发读取时的表现,拜托大家...。
bin/kafka-consumer-perf-test.sh \
--bootstrap-server localhost:9092 \
--topic perf-test \
--messages 5000000 \
--fetch-size 1048576 \
--threads 12
2.3 使用 librdkafka 的 rdkafka_performance——跨语言的极致跑分神器
If you prefer C/C++ or want to benchmark from anor host, rdkafka_performance offers raw throughput numbers without Java overhead.,摆烂...
rdkafka_performance -P -b localhost:9092 -t perf-test -c 5000000 -s 1024 -X security.protocol=plaintext
3. 调参秘籍:让 Kafka 挥洒极限潜能
仅靠默认配置,你只能看到“表面功夫”。要真正突破瓶颈, 盘它。 需要对以下关键参数进行微调:
3.1 Broker 层面的调优——硬件与配置相互呼应
- log.segment.bytes = 1073741824 : 大块日志降低索引开销。
- #log.retention.hours = 168 : 根据业务需求适当延长保留时间,可减少磁盘碎片。
- #num.network_threads = 8、 num.io_threads = 8: 与 CPU 核心数匹配,提高网络和磁盘并发度。
- #socket.send.buffer.bytes / socket.receive.buffer.bytes = 1048576 : 增大网络缓冲,降低丢包概率。
- #queued.max.requests = 50000: 扩容请求队列,防止突发流量被拒绝。
3.2 Producer 调优——写入如流水线般顺畅无阻
- batches.size = 524288 : 合理批次大小提升压缩率与磁盘写入效率。
- Linger.ms = 10~20 ms : 小幅延迟换来更大的批次聚合。
- Acks = all : 保证可靠性的一边, 如果磁盘 I/O 足够快,也不会显著拖慢吞吐。
- IDEMPOTENT.PRODUCER = true : 开启幂等特性后 即使出现重试也不会导致重复计数,省去后期清洗工作量。
3️⃣ Consumer 调优——读取不再是瓶颈,而是加速器
-
* * * * * * * *
1. 在 Ubuntu 上打造 Kafka 的黄金实验室
想象一下 当你在 Ubuntu 的终端里敲下第一行命令,整个大数据处理的世界瞬间亮起了灯塔。这里的每一次敲击, 试试水。 都像是为一场性能飞跃埋下伏笔。下面我们一步步搭建,让你的机器从“普通”变成“极速”。
1.1 安装 JDK —— 为 Kafka 注入血液
Kafka 是用 Java 写的, 没有 Java,Kafka 只能在原地打转。推荐使用 OpenJDK 17,它的稳定性和新特性恰好匹配 Kafka 最新版。
sudo apt-get update sudo apt-get install -y openjdk-17-jdk java -version # 确认安装成功
1.2 拉取并解压 Kafka 包 —— 把宝藏装进本地磁盘
从官方镜像下载最新的稳定版,解压到 /opt/kafka 目录。 要我说... 保持目录结构完整,这样后续脚本才能顺畅调用。
wget https://downloads.apache.org/kafka/3.4.0/kafka_2.13-3.4.0.tgz sudo mkdir -p /opt/kafka sudo tar -xzf kafka_2.13-3.4.0.tgz -C /opt/kafka --strip-components=1
1.3 启动 Zookeeper 与 Broker —— 双剑合璧, 方能独步江湖
Zookeeper 是 Kafka 的守护神,先把它唤醒;接着点燃 Broker,让它开始吞吐信息。
cd /opt/kafka bin/zookeeper-server-start.sh config/zookeeper.properties & bin/kafka-server-start.sh config/server.properties &
1.4 创建测试 Topic —— 为性能测试铺路
Topic 就像赛道, 分区越多、复制因子越高,竞争越激烈,后来啊也更真实,开搞。。
bin/kafka-topics.sh --create \
--bootstrap-server localhost:9092 \
--replication-factor 1 \
--partitions 6 \
--topic perf-test
2. 性能测试利器:官方脚本 vs 社区工具
Kafka 自带两把“刀”:kafka-producer-perf-test.sh 与 kafka-consumer-perf-test.sh。 闹笑话。 如果你想要更细粒度的指标,可以引入 Confluent 的 kcat 或者 librdkafka 的 rdkafka_performance。
2.1 Producer 性能压测——让写入成为狂飙的快感
下面这条指令会向 perf-test 推送 5 百万条、 每条 1024 字节的大礼包, 本质上... 并且不限制吞吐速率,让硬件极限自行展现。
bin/kafka-producer-perf-test.sh \
--topic perf-test \
--num-records 5000000 \
--record-size 1024 \
--throughput -1 \
--producer-props bootstrap.servers=localhost:9092 acks=all linger.ms=5 batch.size=65536
2.2 Consumer 性能压测——让读取同样沸腾起来
消费端可以并行启动多个线程,以检验 Broker 在高并发读取时的表现,拜托大家...。
bin/kafka-consumer-perf-test.sh \
--bootstrap-server localhost:9092 \
--topic perf-test \
--messages 5000000 \
--fetch-size 1048576 \
--threads 12
2.3 使用 librdkafka 的 rdkafka_performance——跨语言的极致跑分神器
If you prefer C/C++ or want to benchmark from anor host, rdkafka_performance offers raw throughput numbers without Java overhead.,摆烂...
rdkafka_performance -P -b localhost:9092 -t perf-test -c 5000000 -s 1024 -X security.protocol=plaintext
3. 调参秘籍:让 Kafka 挥洒极限潜能
仅靠默认配置,你只能看到“表面功夫”。要真正突破瓶颈, 盘它。 需要对以下关键参数进行微调:
3.1 Broker 层面的调优——硬件与配置相互呼应
- log.segment.bytes = 1073741824 : 大块日志降低索引开销。
- #log.retention.hours = 168 : 根据业务需求适当延长保留时间,可减少磁盘碎片。
- #num.network_threads = 8、 num.io_threads = 8: 与 CPU 核心数匹配,提高网络和磁盘并发度。
- #socket.send.buffer.bytes / socket.receive.buffer.bytes = 1048576 : 增大网络缓冲,降低丢包概率。
- #queued.max.requests = 50000: 扩容请求队列,防止突发流量被拒绝。
3.2 Producer 调优——写入如流水线般顺畅无阻
- batches.size = 524288 : 合理批次大小提升压缩率与磁盘写入效率。
- Linger.ms = 10~20 ms : 小幅延迟换来更大的批次聚合。
- Acks = all : 保证可靠性的一边, 如果磁盘 I/O 足够快,也不会显著拖慢吞吐。
- IDEMPOTENT.PRODUCER = true : 开启幂等特性后 即使出现重试也不会导致重复计数,省去后期清洗工作量。
3️⃣ Consumer 调优——读取不再是瓶颈,而是加速器
-
* * * * * * * *

