文章目录
- 前言
- 一、安装 JDK
- 二、安装Kafka
- 1、wget 下载
- 2、解压
- 3、修改配置文件
- 4、kafka配置文件详解
- 三、启动 kafka & 停止
- 启动
- 1、先启动zk
- 2、再启动kafka
- 停止
- 1、先停止kafka
- 2、再停止zk
- 四、设置开机自动启动
- 五、测试
- 1、生产者发送消息
- 2、消费者接受消息
- 总结
前言
kafka官网:http://kafka.apache.org/
kafka下载页面:http://kafka.apache.org/downloads
kafka配置快速入门:http://kafka.apache.org/quickstart
新版本的kafka自带有
zookeeper,本篇文章记录使用自带zookeeper搭建kafka。
一、安装 JDK
二、安装Kafka
可 官网 下载或 wget 下载
1、wget 下载
wget https://archive.apache.org/dist/kafka/3.0.0/kafka_2.12-3.0.0.tgz
2、解压
tar -zxvf kafka_2.12-3.0.0.tgz
# 改名
mv kafka_2.12-3.0.0 kafka
# 创建zk存储路径 和 kafka存储路径
mkdir -p /data/software/kafka/zk/datas
mkdir -p /data/software/kafka/datas
3、修改配置文件
新版的 kafka
安装包中已经自带了 zookeeper
的安装包,所以首先配置 zookeeper.properties
配置文件
vim /data/software/kafka/config/zookeeper.properties
#数据存放路径
dataDir=/data/software/kafka/zk/datas
# the port at which the clients will connect
clientPort=2181
# disable the per-ip limit on the number of connections since this is a non-production config
maxClientCnxns=0
# Disable the adminserver by default to avoid port conflicts.
# Set the port to something non-conflicting if choosing to enable this
admin.enableServer=false
# admin.serverPort=8080
修改kafka
的server.properties
配置文件
#配置kafka的server.properties配置文件
vim /data/software/kafka/config/server.properties
# broker 的编号,如果集群中有多个 broker,则每个 broker 的编号需要设置的不同
broker.id=0
#存放消息数据的文件地址
log.dirs=/data/software/kafka/datas
#如果允许外网访问,需要配置 advertised.listeners=PLAINTEXT://<公网IP>:9092
listeners=PLAINTEXT://172.31.186.177:9092
#注意:外网访问
advertised.listeners=PLAINTEXT://47.243.118.226:9092
4、kafka配置文件详解
//broker.id是kafka broker的编号,集群里每个broker的id需不同,默认为0,如果使用集群,递增该编号即可。
broker.id=0
//如果允许外网访问,需要配置 advertised.listeners=PLAINTEXT://<公网IP>:9092
listeners=PLAINTEXT://<内网IP>:9092
//注意:外网访问
listeners=PLAINTEXT://<内网IP>:9092
advertised.listeners=PLAINTEXT://<公网IP>:9092
//设置Zookeeper地址,如果Zookeeper采用了集群模式,多个地址间使用英文逗号隔开
zookeeper.connect=192.168.123.102:2181,192.168.123.103:2181,192.168.123.104:2181
//num.partitions 为新建Topic的默认Partition(分区)数量,默认为1,partition数量提升,一定程度上可以提升并发性
num.partitions=1
如果配置多个目录,新创建的topic他把消息持久化的地方是,当前以逗号分割的目录中,那个分区数最少就放那一个
log.dirs=/data/software/kafka/datas
//这个是borker进行网络处理的线程数
num.network.threads=3
//这个是borker进行I/O处理的线程数
num.io.threads=8
//发送缓冲区buffer大小,数据不是一下子就发送的,先回存储到缓冲区了到达一定的大小后在发送,能提高性能
socket.send.buffer.bytes=102400
//kafka接收缓冲区大小,当数据到达一定大小后在序列化到磁盘
socket.receive.buffer.bytes=102400
//这个参数是向kafka请求消息或者向kafka发送消息的请请求的最大数,这个值不能超过java的堆栈大小
socket.request.max.bytes=104857600
//每个数据目录用来日志恢复的线程数目
num.recovery.threads.per.data.dir=1
//默认消息的最大持久化时间,168小时,7天
log.retention.hours=168
//轮转时间,当需要删除指定小时之前的数据时,该设置项很重要
log.roll.hours=12
//这个参数是:因为kafka的消息是以追加的形式落地到文件,当超过这个值的时候,kafka会新起一个文件
log.segment.bytes=1073741824
//每隔300000毫秒去检查上面配置的log失效时间
log.retention.check.interval.ms=300000
//是否启用log压缩,一般不用启用,启用的话可以提高性能
log.cleaner.enable=false
//设置zookeeper的连接超时时间
zookeeper.connection.timeout.ms=6000
三、启动 kafka & 停止
备注 : -daemon 为后台启动!
启动
1、先启动zk
/data/software/kafka/bin/zookeeper-server-start.sh -daemon /data/software/kafka/config/zookeeper.properties
启动成功截图
2、再启动kafka
/data/software/kafka/bin/kafka-server-start.sh -daemon /data/software/kafka/config/server.properties
启动成功截图
停止
1、先停止kafka
/data/software/kafka/bin/kafka-server-stop.sh
2、再停止zk
/data/software/kafka/bin/zookeeper-server-stop.sh
四、设置开机自动启动
cat > /usr/lib/systemd/system/kafka.service <<EOF
[Unit]
Description=kafkaservice
After=network.target
[Service]
WorkingDirectory=/data/software/kafka
ExecStart=/data/software/kafka/bin/kafka-server-start.sh /data/software/kafka/config/server.properties
ExecStop=/data/software/kafka/bin/kafka-server-stop.sh
User=root
Group=root
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable kafka.service && systemctl restart kafka.service
systemctl status kafka.service
netstat -antp | grep 9092
ps aux | grep kafka
jps -l
五、测试
1、生产者发送消息
- 主题是
fb
,会自动创建fb
的主题
cd 到kafka的bin目录下执行 :
./kafka-console-producer.sh --broker-list 47.243.118.226:9092 --topic fb
2、消费者接受消息
bin/kafka-console-consumer.sh --bootstrap-server 47.243.118.226:9092 --topic fb --from-beginning
- –from-beginning从头开始将历史消息也读出来
总结
如果此篇文章有帮助到您, 希望打大佬们能
关注
、点赞
、收藏
、评论
支持一波,非常感谢大家!
如果有不对的地方请指正!!!