一、Kafka 概述
Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于
大数据实时处理领域。
二、消息队列的两种模式
(1)点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除)
消息生产者生产消息发送到Queue中,然后消息消费者从Queue中取出并且消费消息。
消息被消费以后,queue 中不再有存储,所以消息消费者不可能消费到已经被消费的消息。
Queue 支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。
(2)发布/订阅模式(一对多,消费者消费数据之后不会清除消息)
消息生产者(发布)将消息发布到 topic 中,同时有多个消息消费者(订阅)消费该消
息。和点对点方式不同,发布到 topic 的消息会被所有订阅者消费。
三、kafka下载和环境准备
kafaka下载地址:http://kafka.apache.org/downloads.html
选择自己需要对应的scala版本进行下载。
3.1 集群规划
准备三台虚拟机这三台虚拟机也完成了zookeeper的集群规划,没有完成的可以参考这一篇Zookeeper集群部署。
四、配置环境
4.1 解压安装包,并修改解压后的文件名称
tar -zxvf kafka_2.12-2.3.0.tgz
mv kafka_2.12-2.3.0 kafka
4.2 在kafka目录下创建 logs 文件夹
mkdir logs
4.3 修改配置文件
cd config
sudo vi server.properties
输入以下内容:
#broker 的全局唯一编号,不能重复
broker.id=0
#删除 topic 功能使能
delete.topic.enable=true
#处理网络请求的线程数量
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 运行日志存放的路径
log.dirs=/opt/module/kafka/logs
#topic 在当前 broker 上的分区个数
num.partitions=1
#用来恢复和清理 data 下数据的线程数量
num.recovery.threads.per.data.dir=1
#segment 文件保留的最长时间,超时将被删除
log.retention.hours=168
#配置连接 Zookeeper 集群地址
zookeeper.connect=slave1:2181,slave2:2181,slave3:2181
4.4配置环境变量
sudo vi /etc/profile
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin
source /etc/profile
4.5分发压缩包
xsync kafka/
注意:分发之后记得配置其他机器的环境变量
分别在slave2 和slave3 上修改配置文件kafka/config/server.properties
中的 broker.id=1、broker.id=2
注:broker.id 不得重复
五、启动集群和kafka基本命令操作
5.1 启动集群
先在各个节点上依次启动zookeeper进行集群。
然后依次在 slave1、slave2、slave3各个节点上启动 kafka
//启动集群
bin/kafka-server-start.sh -daemon
config/server.properties
//关闭集群
bin/kafka-server-stop.sh stop
5.2Kafka 命令行操作
1.查看当前服务器中的所有 topic
bin/kafka-topics.sh --zookeeper slave1:2181 --list
2.创建 topic
bin/kafka-topics.sh --zookeeper slave1:2181 --create --replication-factor 2 --partitions 1 --topic test
选项说明:–topic 定义 topic 名 --replication-factor 定义副本数 --partitions 定义分区数
这里如果出现
Error while executing topic command : Replication factor: 2 larger than available brokers: 0.
创建kafka的topic显示,存活的brokers为0
可能是zookeeper集群没有正常完成
3.发送消息和消费消息
//发送消息
bin/kafka-console-producer.sh --broker-list slave1:9092 --topic test
//消费消息
bin/kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic test
4.删除 topic
bin/kafka-topics.sh --zookeeper slave1:2181 --delete --topic test
来源:CSDN
作者:奋斗的IT小白菜
链接:https://blog.csdn.net/qq_36470898/article/details/104513433