Kafka 基本使用
1、安装部署
1.1、集群规划
hadoop103
|
hadoop104
|
hadoop105
|
zk
|
zk
|
zk
|
kafka
|
kafka
|
kafka
|
1.2、安装&配置
下载地址 https://kafka.apache.org/downloads.html
解压安装包,重命名安装路径
[hui@hadoop103 software]$ tar -zxvf kafka_2.12-3.0.0.tgz -C /opt/module/ [hui@hadoop103 module]$ mv kafka_2.12-3.0.0 kafka
kafka 基础配置 粗体部分是需要特别注意的地方
[hui@hadoop103 config]$ vim server.properties #broker的全局唯一编号,不能重复,只能是数字。 broker.id=0 #处理网络请求的线程数量 num.network.threads=3 #用来处理磁盘IO的线程数量 num.io.threads=8 #发送套接字的缓冲区大小 socket.send.buffer.bytes=102400 #接收套接字的缓冲区大小 socket.receive.buffer.bytes=102400 #请求套接字的缓冲区大小 socket.request.max.bytes=104857600 #kafka运行日志(数据)存放的路径,路径不需要提前创建,kafka自动帮你创建,可以配置多个磁盘路径,路径与路径之间可以用","分隔 log.dirs=/opt/module/kafka/datas #topic在当前broker上的分区个数 num.partitions=1 #用来恢复和清理data下数据的线程数量 num.recovery.threads.per.data.dir=1 #每个topic创建时的副本数,默认时1个副本 offsets.topic.replication.factor=1 #segment文件保留的最长时间,超时将被删除 log.retention.hours=168 #每个segment文件的大小,默认最大 1Glog.segment.bytes=1073741824 #检查过期数据的时间,默认5分钟检查一次是否数据过期 log.retention.check.interval.ms=300000 #配置连接Zookeeper集群地址(在zk根目录下创建/kafka,方便管理) zookeeper.connect=hadoop103:2181,hadoop104:2181,hadoop105:2181/kafka
分发安装文件
[hui@hadoop103 module]$ sxync.sh kafka/
注意分发完后记得修改104 105 上的 broker.id 集群内不能重复
[hui@hadoop104 ~]$ less /opt/module/kafka/config/server.properties broker.id=1 [hui@hadoop105 ~]$ less /opt/module/kafka/config/server.properties broker.id=2
环境变量配置
[hui@hadoop103 ~]$ vim /etc/profile #KAFKA_HOME export KAFKA_HOME=/opt/module/kafka export PATH=$PATH:$KAFKA_HOME/bin
分发环境变量& source
[hui@hadoop103 ~]$ /home/hui/bin/sxync.sh /etc/profile [hui@hadoop103 module]$ source /etc/profile [hui@hadoop104 module]$ source /etc/profile [hui@hadoop105 module]$ source /etc/profile
1.3、群起脚本
zookeeper 群起
#!/bin/sh case $1 in "start"){ for i in hui@hadoop103 hui@hadoop104 hui@hadoop105 do echo ------------------- $i -------------- ssh $i 'source /etc/profile && /opt/module/zookeeper-3.4.10/bin/zkServer.sh start' done };; "stop"){ for i in hui@hadoop103 hui@hadoop104 hui@hadoop105 do echo ------------------- $i -------------- ssh $i 'source /etc/profile && /opt/module/zookeeper-3.4.10/bin/zkServer.sh stop' done };; esac
kafka 群起
[hui@hadoop103 bin]$ cat kk.sh #!/bin/sh case $1 in "start") for i in hadoop103 hadoop104 hadoop105 do echo "---- start $i kafka ---" ssh $i "source /etc/profile && /opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties " done ;; "stop") for i in hadoop103 hadoop104 hadoop105 do echo "---- stop $i kafka ---" ssh $i "/opt/module/kafka/bin/kafka-server-stop.sh " done ;; esac
注意:停止Kafka集群时,一定要等Kafka所有节点进程全部停止后再停止Zookeeper集群。因为Zookeeper集群当中记录着Kafka集群相关信息,Zookeeper集群一旦先停止,Kafka集群就没有办法再获取停止进程的信息,只能手动杀死Kafka进程了。
2、Kafka 命令行操作
kafka 基础架构
2.1、topic 命令
查看操作主题命令参数
[hui@hadoop103 kafka]$ bin/kafka-topics.sh
应用举例
查看多有topic
[hui@hadoop103 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop103:9092 --list
创建topic
[hui@hadoop103 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop103:9092 --create --topic first --partitions 1 --replication-factor 1
Created topic first
选项说明
- --topic first 创建 topci 名称是 first
- --partitions 设置分区数
- --replication-factor 设置副本数
查看主题详情
[hui@hadoop103 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop103:9092 --describe --topic first Topic: first TopicId: iKYakcuBTaO4mPK0RIF7TQ PartitionCount: 1 ReplicationFactor: 1 Configs: segment.bytes=1073741824 Topic: first Partition: 0 Leader: 2 Replicas: 2 Isr: 2
修改分区数再次查看详情(分区数只能增加不能减少)
[hui@hadoop103 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop103:9092 --alter --topic first --partitions 2 [hui@hadoop103 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop103:9092 --describe --topic first Topic: first TopicId: iKYakcuBTaO4mPK0RIF7TQ PartitionCount: 2 ReplicationFactor: 1 Configs: segment.bytes=1073741824 Topic: first Partition: 0 Leader: 2 Replicas: 2 Isr: 2 Topic: first Partition: 1 Leader: 0 Replicas: 0 Isr: 0
删除主题
[hui@hadoop103 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop103:9092 --delete --topic first
[hui@hadoop103 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop103:9092 --list
2.2、produce 命令
produce 命令
[hui@hadoop103 kafka]$ bin/kafka-console-producer.sh
发送消息测试
[hui@hadoop103 kafka]$ bin/kafka-console-producer.sh --bootstrap-server hadoop103:9092 --topic first
2.3、消费者命令
消费者命令
[hui@hadoop103 kafka]$ bin/kafka-console-consumer.sh
测试
首先启动消费者进程
[hui@hadoop103 kafka]$ bin/kafka-console-consumer.sh --bootstrap-server hadoop103:9092 --topic first
发送消息
[hui@hadoop103 kafka]$ bin/kafka-console-producer.sh --bootstrap-server hadoop103:9092 --topic first >hello word >hello kk >hello wdh01
消费到的消息
[hui@hadoop103 kafka]$ bin/kafka-console-consumer.sh --bootstrap-server hadoop103:9092 --topic first
hello word
hello kk
hello wdh01
分类:
kafka
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!