【尚硅谷】2022版Kafka3.x教程(从入门到调优,深入全面)
发布/订阅模式:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息。
Kafka的定义:Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。
传统的消息队列的应用场景包括:缓存/消峰、解耦和异步通信。
消息队列的两种模式:
官网下载地址:http://kafka.apache.org/downloads.html
目标:将kafka部署到hadoop101,hadoop102和hadoop103上。
将安装包"kafka_2.12-3.0.0.tgz"复制到目录"/opt/software"下,然后解压至"/opt/module"目录下:
tar -zxvf kafka_2.12-3.0.0.tgz -C /opt/module
修改解压后文件的名称:
mv kafka_2.12-3.0.0.tgz/ kafka
进入到配置文件的目录"/opt/module/kafka/config",修改配置文件"server.properties":
vim server.properties
修改三部分内容:
#全局唯一的编号,各个节点不能重复
broker.id=0
#kafka日志存放路径
log.dirs=/opt/module/kafka/datas
#配置连接Zookeeper集群的地址(在zk根目录下创建/kafka,方便管理)
zookeeper.connect=hadoop101:2181,hadoop102:2181,hadoop103:2181/kafka
将kafka包分发至hadoop102和hadoop103上:
scp -r /opt/module/kafka [email protected]:/opt/module
scp -r /opt/module/kafka [email protected]:/opt/module
依次,在hadoop102和hadoop103上,修改配置文件"server.properties"的broker.id为1和2。
依次,添加环境变量:
vim /etc/profile
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin
执行环境配置文件(刷新):
source /etc/profile
编写kafka集群统一启动和停止的shell脚本"kf.sh",并放置在/home/user/bin目录下:
#!/bin/bash
case $1 in
"start")
for i in hadoop101 hadoop102 hadoop103
do
echo "--- 启动 $i kafka ---"
sshpass -p 123456 ssh -o StrictHostKeyChecking=no $i "sh /opt/module/kafka/bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties"
done
;;
"stop")
for i in hadoop101 hadoop102 hadoop103
do
echo "--- 停止 $i kafka ---"
sshpass -p 123456 ssh -o StrictHostKeyChecking=no $i "sh /opt/module/kafka/bin/kafka-server-stop.sh"
done
;;
esac
还有集群java进程的显示工具"xcall":
#!/bin/bash
for host in hadoop101 hadoop102 hadoop103
do
echo =============== $host ===============
sshpass -p 123456 ssh -o StrictHostKeyChecking=no $host "/opt/java/jdk/jdk1.8/bin/jps"
done
在目录/home/user下,提升shell脚本的执行权限:
chmod u+x bin/*
首先,启动zookeeper集群(Kafka2.8以后无必要)
zk.sh start
再启动kafka集群:
kf.sh start
查看java进程状态:
xcall
[root@hadoop101 ~]# xcall
=============== hadoop101 ===============
3265 QuorumPeerMain
3746 Jps
3654 Kafka
=============== hadoop102 ===============
3632 Kafka
3243 QuorumPeerMain
3707 Jps
=============== hadoop103 ===============
3634 Kafka
3252 QuorumPeerMain
3709 Jps
停止集群的命令如下:
kf.sh stop
移动至目录"/opt/module/kafka/bin"下,
查看操作主题命令行参数:
kafka-topics.sh
查看当前服务器中的所有topic:
kafka-topics.sh --bootstrap-server hadoop101:9092 --list
创建名称为"first"的主题,并指定分区为1,副本为2:
kafka-topics.sh --bootstrap-server hadoop101:9092 --create --partitions 1 --replication-factor 2 --topic first
选项说明:
–topic定义了主题名;–replication-factor定义了副本数;–partitions定义了分区数
查看first主题的详情:
kafka-topics.sh --bootstrap-server hadoop101:9092 --describe --topic first
修改分区数(注意:分区数只能增加,不能减少):
kafka-topics.sh --bootstrap-server hadoop101:9092 --alter --topic first --partitions 3
删除topic操作:
kafka-topics.sh --bootstrap-server hadoop101:9092 --delete --topic first
查看操作生产者命令参数:
kafka-console-producer.sh
向主机hadoop101的主题first中,添加消息:
kafka-console-producer.sh --bootstrap-server hadoop101:9092 --topic first
/> hello
/> world
查看操作消费者命令参数:
kafka-console-consumer.sh
获取first主题的数据:
kafka-console-consumer.sh --bootstrap-server hadoop101:9092 --topic first
把主题中所有的数据读出来(包括:历史数据):
kafka-console-consumer.sh --bootstrap-server hadoop101:9092 --topic first --from-beginning