Kafka单机部署学习演示案例

Kafka 单机部署演示

前置准备

虚拟机配置:

  • 内存:3G
  • 处理器:1
  • 核数:1

(一)kafka 安装

去kafka官网下载稳定版本到Linux服务器中进行解压安装。下载链接,我这里使用的是2.7.0 版本的, 建议使用迅雷插件下载,wget 速度有点慢。

[root@localhost install-package]# pwd
/home/lvzb/install-package
[root@localhost install-package]# wget https://archive.apache.org/dist/kafka/2.7.0/kafka_2.13-2.7.0.tgz
[root@localhost install-package]# ls
jdk-8u11-linux-x64.tar.gz  jdk-8u351-linux-x64.tar.gz  kafka_2.13-2.7.0.tgz
[root@localhost install-package]#
[root@localhost install-package]#
[root@localhost install-package]#
[root@localhost install-package]# tar -zxvf kafka_2.13-2.7.0.tgz
kafka_2.13-2.7.0/
kafka_2.13-2.7.0/LICENSE
kafka_2.13-2.7.0/NOTICE
kafka_2.13-2.7.0/bin/
kafka_2.13-2.7.0/bin/kafka-delete-records.sh
kafka_2.13-2.7.0/bin/trogdor.sh
kafka_2.13-2.7.0/bin/kafka-preferred-replica-election.sh
kafka_2.13-2.7.0/bin/connect-mirror-maker.sh
.......

[root@localhost install-package]#
[root@localhost install-package]# ls
jdk-8u11-linux-x64.tar.gz  jdk-8u351-linux-x64.tar.gz  kafka_2.13-2.7.0  kafka_2.13-2.7.0.tgz
[root@localhost install-package]# cp -r kafka_2.13-2.7.0  /opt/software/middleware/kafka_broke1
[root@localhost install-package]# cp -r kafka_2.13-2.7.0  /opt/software/middleware/kafka_broke2

(二)启动 kafka

  • 修改配置文件,进入kafka目录修改 config/server.properties 打开 listeners=PLAINTEXT://localhost:9092 localhost 最好换成你的虚拟机ip,
  • 启动内置zookeeper
  • 启动kafkfa服务
  • nohup XXXX & : 后台启动
[root@localhost kafka_2.13-2.7.0]#
[root@localhost kafka_2.13-2.7.0]# pwd
/opt/software/middleware/kafka_2.13-2.7.0
[root@localhost kafka_2.13-2.7.0]#
[root@localhost kafka_2.13-2.7.0]# vim config/server.properties

.....
# The address the socket server listens on. It will get the value returned from
# java.net.InetAddress.getCanonicalHostName() if not configured.
#   FORMAT:
#     listeners = listener_name://host_name:port
#   EXAMPLE:
#     listeners = PLAINTEXT://your.host.name:9092
listeners=PLAINTEXT://192.168.125.100:9092
....

[root@localhost kafka_2.13-2.7.0]# nohup bin/zookeeper-server-start.sh config/zookeeper.properties &
[1] 69676
[root@localhost kafka_2.13-2.7.0]# nohup bin/kafka-server-start.sh config/server.properties &
[2] 70059

(三)创建 topic

  • 创建一个 topic testk 含有3个partition, 每个 partition 单副本
  • 命令说明
    • 查看topic:bin/kafka-topics.sh --zookeeper localhost:2181 --list
    • 创建topic:bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic testk --partitions 3 --replication factor 1
    • 查看topic testk: bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic testk
[root@localhost kafka_2.13-2.7.0]# bin/kafka-topics.sh --zookeeper localhost:2181 --list
[root@localhost kafka_2.13-2.7.0]#
[root@localhost kafka_2.13-2.7.0]#
[root@localhost kafka_2.13-2.7.0]#bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic testk --partitions 3 --replication factor 1 
[root@localhost kafka_2.13-2.7.0]#
[root@localhost kafka_2.13-2.7.0]# bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic testk
Topic: testk    PartitionCount: 3       ReplicationFactor: 1    Configs:
        Topic: testk    Partition: 0    Leader: 0       Replicas: 0     Isr: 0
        Topic: testk    Partition: 1    Leader: 0       Replicas: 0     Isr: 0
        Topic: testk    Partition: 2    Leader: 0       Replicas: 0     Isr: 0
[root@localhost kafka_2.13-2.7.0]#

(四)创建消费者

  • 新开一个窗口 创建生产者:bin/kafka-console-producer.sh --bootstrap-server 192.168.125.100:9092 --topic testk, 输入
[root@localhost kafka_2.13-2.7.0]# bin/kafka-console-producer.sh --bootstrap-server 192.168.125.100:9092 --topic testk
>
>
>
>
>
>
>aaa
> hello world
>
>你好
> 行路难,行路难,多歧路,今安在?
>长风破浪会有时,直挂云帆济沧海!
>
>
  • 新开一个窗口 创建一个消费者: bin/kafka-console-consumer.sh --bootstrap-server 192.168.125.100:9092 --from-beginning --topic testk, 从头开始消费
[root@localhost kafka_2.13-2.7.0]# bin/kafka-console-consumer.sh --bootstrap-server 192.168.125.100:9092 --from-beginning --topic testk




aaa
hello world

你好
 行路难,行路难,多歧路,今安在?
长风破浪会有时,直挂云帆济沧海!


(五)性能测试

// 生产者
bin/kafka-producer-perf-test.sh --topic testk --num-records 100000 --record-size 1000 --throughput 2000 --producer-props bootstrap.servers=192.168.125.100:9092
// 消费者
bin/kafka-consumer-perf-test.sh --bootstrap-server 192.168.125.100:9092 --topic testk --fetch-size 1048576 --messages 100000 --threads 1
  • 生产者测试:bin/kafka-producer-perf-test.sh --topic testk --num-records 100000 --record-size 1000 --throughput 200000 --producer-props bootstrap.servers=192.168.125.100:9092
    • 给topic testk 发送 100000 个消息,
    • –num-records 100000: 总共发送100000条信息
    • –record-size 1000: 每个消息 1000字节大小
    • –throughput 200000: 每秒200000条消息 ,每秒多少条信息,设置成-1,表示不限流,可测生产者最大吞吐量
[root@localhost kafka_2.13-2.7.0]#
[root@localhost kafka_2.13-2.7.0]#
[root@localhost kafka_2.13-2.7.0]# bin/kafka-producer-perf-test.sh --topic testk --num-records 100000 --record-size 1000 --throughput 200000 --producer-props bootstrap.servers=192.168.125.100:9092
770 records sent, 152.5 records/sec (0.15 MB/sec), 758.4 ms avg latency, 3553.0 ms max latency.
3791 records sent, 755.3 records/sec (0.72 MB/sec), 1680.1 ms avg latency, 2748.0 ms max latency.
5737 records sent, 1138.5 records/sec (1.09 MB/sec), 2480.5 ms avg latency, 3174.0 ms max latency.
7895 records sent, 1556.3 records/sec (1.48 MB/sec), 1755.0 ms avg latency, 2854.0 ms max latency.
8928 records sent, 1773.5 records/sec (1.69 MB/sec), 1451.4 ms avg latency, 2237.0 ms max latency.
8888 records sent, 1770.5 records/sec (1.69 MB/sec), 820.1 ms avg latency, 1850.0 ms max latency.

从结果来看 :发送9000条左右数据 ,大约每秒能发送 1770 个左右消息,吞吐量为1.69MB/sec, 每次写入的评均延迟1451.4ms, 最大延迟 2237.0ms。虚拟机的配置不是很好

  • 消费者测试:bin/kafka-consumer-perf-test.sh --bootstrap-server 192.168.125.100:9092 --topic testk --fetch-size 1048576 --messages 100000 --threads 1
    • –topic: 指定topic
    • –fetch-size : 指定每个 fetch的数据大小
    • –messages : 总共要消费的消息个数
[root@localhost kafka_2.13-2.7.0]#
[root@localhost kafka_2.13-2.7.0]# bin/kafka-consumer-perf-test.sh --bootstrap-server 192.168.125.100:9092 --topic testk --fetch-size 1048576 --messages 100000 --threads 1
WARNING: option [threads] and [num-fetch-threads] have been deprecated and will be ignored by the test
start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec, rebalance.time.ms, fetch.time.ms, fetch.MB.sec, fetch.nMsg.sec
2022-11-14 21:38:37:934, 2022-11-14 21:38:45:708, 95.6700, 12.3064, 100340, 12907.1263, 1668433121352, -1668433113578, -0.0000, -0.0001
[root@localhost kafka_2.13-2.7.0]#
[root@localhost kafka_2.13-2.7.0]#
[root@localhost kafka_2.13-2.7.0]# bin/kafka-consumer-perf-test.sh --bootstrap-server 192.168.125.100:9092 --topic testk --fetch-size 1048576 --messages 100000 --threads 1
WARNING: option [threads] and [num-fetch-threads] have been deprecated and will be ignored by the test
start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec, rebalance.time.ms, fetch.time.ms, fetch.MB.sec, fetch.nMsg.sec
2022-11-14 21:41:26:185, 2022-11-14 21:41:33:692, 95.6700, 12.7441, 100340, 13366.1916, 1668433289699, -1668433282192, -0.0000, -0.0001
开始时间结束时间共消费数据 MB吞吐量共消费数据 条平均每秒消费/条7890
start.timeend.timedata.consumed.in.MBMB.secdata.consumed.in.nMsgnMsg.secrebalance.time.msfetch.time.msfetch.MB.secfetch.nMsg.sec
2022-11-14 21:38:37:9342022-11-14 21:38:45:70895.670012.306410034012907.12631668433121352-1668433113578-0.0000-0.0001
2022-11-14 21:41:26:1852022-11-14 21:41:33:69295.670012.744110034013366.19161668433289699-1668433282192-0.0000-0.0001

从结果来看: 平均每秒消费 1万2千条左右妥妥的

报错问题解决

  • jdk 版本过低导致启动失败 java.lang.VerifyError: Uninitialized object exists on backward branch

    • 解决,升级jdk版本即可
  • 使用localhost:9092导致 创建生产者和消费者时重复弹出日志WARN [Producer clientId=console-producer] Bootstrap broker localhost:9092 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)

    • 解决:使用ip:9092 而不用 localhost

参考资料

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值