文章目录

  • 前言
  • 一、安装 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

修改kafkaserver.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

启动成功截图

kafka 镜像 下载 kafka3.0版本安装_zookeeper

2、再启动kafka

/data/software/kafka/bin/kafka-server-start.sh -daemon /data/software/kafka/config/server.properties

启动成功截图

kafka 镜像 下载 kafka3.0版本安装_分布式_02

停止

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

kafka 镜像 下载 kafka3.0版本安装_kafka_03

2、消费者接受消息

bin/kafka-console-consumer.sh --bootstrap-server 47.243.118.226:9092 --topic fb --from-beginning
  • –from-beginning从头开始将历史消息也读出来

总结

如果此篇文章有帮助到您, 希望打大佬们能关注点赞收藏评论支持一波,非常感谢大家!
如果有不对的地方请指正!!!