1.基本概念
1.1Kafka是什么
Kafka是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域。
1.2消息队列应用场景
传统消息队列有三大应用场景:
- 异步处理
- 流量消峰
- 解耦
1.3消息队列两种模式
消息队列两种模式:点对点模式和发布/订阅模式。
- 点对点模式
点对点模式中生产者和消费者一对一,消费者收到消息后,这条消息就会删除。
注意:一个MQ可以有很多生产者消费者,但是生产者消费者是一一对应的,不能一对多,类似微信点对点通信。
- 发布订阅模式
发布订阅模式中,生产者和消费者关系是一对多,所以消费消息后不会删除消息,Kafka默认保留7天。
注意:发布订阅模式类似微博,三个重要概念publish、topic、subscribe
- 区别
点对点模式消费一条删除一条;
发布/订阅模式不会删除,会持久化一段时间(默认一周,可配置)。
2.安装部署
使用docker快速部署参考:https://blog.csdn.net/qq_35394891/article/details/84349955
Kafka安装步骤:
①下载安装包,0.9版本对kafka消费者重新设计,简化了消费者使用难度,所以选择0.10及以后的版本;
②解压,tar -zxvf /opt/kafka_..tgz -C /opt/module/;
③修改配置文件,vim /opt/module/../conf/server.properties
#kafka运行日志存放的路径,记得要创建logs目录
log.dirs=/opt/module/kafka/logs
#配置连接Zookeeper集群地址
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181
④配置环境变量
$ sudo vi /etc/profile
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin
$ source /etc/profile
⑤分发,xsync kafka_2.11…/
⑥修改各节点broker.id,vim server.properties,修改broker.id,broker.id可以从0开始
⑦启动,kafka没有群起脚本,只能一个一个启动。(需先启动zookeeper)
kafka-server-start.sh –daemon config/server.properties(–daemon表示后台进程)
3.命令行操作
kafka的命令行操作一般用于测试,主要有7个命令:查看所有topic、创建topic、删除topic、发送消息、消费消息、查看某个topic详情、修改topic分区数。
- 查看所有topic
kafka-topics.sh --zookeeper hadoop102:2181 --list
- 创建topic
kafka-topics.sh --zookeeper hadoop102:2181 --create --replication-factor 3 --partitions 1 --topic first
选项说明:
--topic 定义topic名
--replication-factor 定义副本数
--partitions 定义分区数
- 删除topic
kafka-topics.sh --zookeeper hadoop102:2181 --delete --topic first
- 发送消息
kafka-console-producer.sh --broker-list hadoop102:9092 --topic first
- 消费消息
kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --from-beginning --topic first
- 查看某个Topic的详情
kafka-topics.sh --zookeeper hadoop102:2181 --describe --topic first
- 修改分区数
kafka-topics.sh --zookeeper hadoop102:2181 --alter --topic first --partitions 6
分区数只能增大,不能减少。
- 查看消费者组的消费情况
kafka-consumer-groups.sh --bootstrap-server hadoop101:9092 --describe --group groupname
打印如下:
TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
testopic 0 455843 455887 44 abcdef-4875dbdb-2034-4483-9ccb-b950682608b4 /*.*.*.* abcdef
这条指令经常使用,可以查看某个消费者组topic的偏移量,从而判断是否有消息积压。