kafka笔记
安装jdk
关闭防火墙和selinux
开放2181端口:
查看防火墙状态:`systemctl status firewalld 或 firewall-cmd --state`
关闭防火墙:`systemctl stop firewalld`
禁用防火墙:`systemctl disable firewalld`
查看已开放的端口:`firewall-cmd --zone=public --list-ports`
添加端口:`firewall-cmd --zone=public --add-port=2181/tcp --permanent`
重启:`firewall-cmd --reload`
查看端口:`firewall-cmd --zone=public --query-port=2181/tcp`
关闭selinux并重启系统`
vi /etc/sysconfig/selinux
...
SELINUX=disabled
...
reboot
getenforce 查看是否被禁用`
安装lrzsz
yum -y install lrzsz
zookeeper下载及安装:
https://blog.csdn.net/weixin_43626465/article/details/126179883
使用命令下载
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.5.10/apache-zookeeper-3.5.10-bin.tar.gz
直接修改版本号
ZooKeeper安装及简单操作:
https://www.cnblogs.com/h–d/p/10269869.html
解压:tar -zxvf zookeeper-3.4.6 -C /usr/zookeeper/
更改配置文件:/usr/zookeeper/zookeeper-3.4.6/conf
# The number of milliseconds of each tick
# Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
# initLimit:LF初始通信时限
# 集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
# syncLimit:LF同步通信时限
# 集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
# dataDir:数据文件目录
# Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里
dataDir=/tmp/zookeeper/data
# dataLogDir:日志文件目录
# Zookeeper保存日志文件的目录。
dataLogDir=/tmp/zookeeper/logs
# the port at which the clients will connect
# clientPort:客户端连接端口
# 客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir保留数量3
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature清理时间间隔1小时
#autopurge.purgeInterval=1
# 服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口)
# 这个配置项的书写格式比较特殊,规则如下:
# server.N=YYY:A:B
# 其中N表示服务器编号,YYY表示服务器的IP地址,A为LF通信端口,表示该服务器与集群中的leader交换的信息的端口。B为选举端口,表示选举新leader时服务器间相互通信的端口(当leader挂掉时,其余服务器会相互通信,选择出新的leader)。一般来说,集群中每个服务器的A端口都是一样,每个服务器的B端口也是一样。但是当所采用的为伪集群时,IP地址都一样,只能时A端口和B端口不一样。
可以不修改zoo.cfg,默认配置就行,进去zookeeper安装目录,启动ZooKeeper
启动命令:./bin/zkServer.sh start
停止命令:./bin/zkServer.sh stop
重启命令:./bin/zkServer.sh restart
状态查看命令:./bin/zkServer.sh status
zookeeper启动失败的可能情况:
https://blog.csdn.net/weixin_37550903/article/details/78091670
下载kafka
wget https://downloads.apache.org/kafka/3.3.1/kafka_2.12-3.3.1.tgz
安装过程:
https://www.cnblogs.com/xyst/p/15660786.html
解压:tar -zxvf kafka_2.12-3.3.1.tgz -C /usr/kafka/
#目录文件:
bin/ config/ libs/ LICENSE licenses/ NOTICE site-docs/
修改配置文件:
cd config #进入config目录
cp server.properties server_back.properties #做备份文件
vi server.properties #更改配置文件
listeners=PLAINTEXT://192.168.83.130:9092 #添加主机地址
advertised.listeners=PLAINTEXT://192.168.83.130:9092 #添加主机地址
**Server Basics**
#broker的主机IP地址,一般不设置
host.name=
#broker服务端口,生产者和消费者再此端口建立连接
port =端口
#broker在集群中的唯一标识,正数
broker.id=1
#后台任务处理的线程数
background.threads=4
#请求队列最大数量
queued.max.requests=500
**Socket Server Settings**
#处理消息的最大线程数,一般情况下数量为cpu核数
num.network.threads=3
#处理磁盘IO的线程数,数值为cpu核数2倍
num.io.threads=8
#发送缓冲区
socket.send.buffer.bytes=1000*1024
#接收缓冲区
socket.receive.buffer.bytes=1000*1024
#请求的最大数值
socket.request.max.bytes=104857600
**Log Basics**
#kafka数据的存放位置,多个用逗号分隔;
log.dirs=/kafka/logs
#每个数据目录的线程数,用于启动时的日志恢复和关闭时的刷新
num.recovery.threads.per.data.dir=1
**Log Retention Policy**
#是否开启清理
log.cleaner.enable=false
#清理运行的线程数
log.cleaner.threads = 2
#清理时每秒处理的字节数
log.cleaner.io.max.bytes.per.second=None
#segment即使没有达到log.segment.bytes设置的大小,也会强制新建一个segment
log.roll.hours =24*7
#数据文件保留多长时间
log.retention.minutes=3000
或者
log.retention.hours=50
#清理策略:delete或者compact
log.cleanup.policy = delete
#topic每个分区的最大文件大小,-1没有大小限制
log.retention.bytes=-1
#消息体的最大字节,小于socket.request.max.bytes
message.max.bytes=5242880
#自动创建topic时的默认副本的个数
default.replication.factor=3
#为每个分区设置获取的消息的字节数
replica.fetch.max.bytes=104857600
#topic的分区是以segment文件存储的,这个控制每个segment的大小
log.segment.bytes=1073741824
#文件大小检查的周期时间
log.retention.check.interval.ms=300000
#清理时候用到的IO缓存大小,一般不需要修改
log.cleaner.io.buffer.size=512*1024
#清理中hash表的扩大因子,一般不需要修改
log.cleaner.io.buffer.load.factor =0.9
#检查是否触发清理
log.cleaner.backoff.ms =15000
#清理频率,越大意味着更高效的清理,但浪费空间
log.cleaner.min.cleanable.ratio=0.5
#压缩信息保留的最长时间,也是客户端消费消息的最长时间
log.cleaner.delete.retention.ms =24*60*60*1000
#segment索引文件大小
log.index.size.max.bytes =10*1024*1024
#fetch操作,需要空间来扫描offset值,值越大扫描速度越快,但浪费空间
log.index.interval.bytes =4096
#partiton缓存,每当消息记录数达到1000时flush一次数据到磁盘
log.flush.interval.messages=1000
#检查数据是否要写入到硬盘的时间间隔
log.flush.scheduler.interval.ms =3000
/*如果消息量始终没有达到阀值,但是离上一次磁盘同步的时间间隔达到阀值,也将触发
表示每间隔1000毫秒flush一次数据到磁盘*/
log.flush.interval.ms=1000
#文件在索引中清除后保留的时间一般不需要去修改
log.delete.delay.ms =60000
#控制上次flush到硬盘的时间点,以便于数据恢复一般不需要去修改
log.flush.offset.checkpoint.interval.ms =60000
**Internal Topic Settings**
#是否允许自动创建topic,若是false,就需要通过命令创建topic
auto.create.topics.enable =true
#每个topic的分区个数
num.partitions=3
#topic的offset的备份数,建议3、4个
offsets.topic.replication.factor=3
#事物备份数,建议3、4个
transaction.state.log.replication.factor=3
#事务重写备份数,建议3、4个
transaction.state.log.min.isr=3
**Zookeeper**
#zookeeper集群的地址
zookeeper.connect=IP1:端口,IP2:端口,IP3:端口...
#zookeeper的连接超时时间
zookeeper.connection.timeout.ms =6000
#zookeeper的心跳间隔,不易过大
zookeeper.session.timeout.ms=6000
#zookeeper集群中leader和follower之间的同步时间
zookeeper.sync.time.ms =2000
**Group Coordinator Settings**
/*在进行第一次重新平衡之前,group协调员将等待更多消费者加入group的时间,
延迟时间越长意味着重新平衡的可能性越小,但是等待处理开始的时间增加*/
group.initial.rebalance.delay.ms=3000
kafka基本操作
1、启动kafka 在kafka目录下[root@center kafka_2.12-3.3.1]#
bin/kafka-server-start.sh config/server.properties 1>/tmp/start-logs/kafkaStart.log 2>/tmp/start-logs/kafka.err &
其中‘>/tmp/start-logs/kafka.log’输出信息重定向,‘&’ 后台进程启动,‘2>/tmp/start-logs/kafka.err’错误信息重定向
启动日志在logs目录里
查看进程ps -ef|grep kafka
2、停止kafka 在bin目录下
bin/kafka-server-stop.sh 1>/tmp/start-logs/kafkaStop.log 2>/tmp/start-logs/kafka.err &
3、创建topic
bin/kafka-topics.sh --create --bootstrap-server 192.168.83.130:9092 --replication-factor 1 --partitions 1 --topic topic_222
其中 --bootstrap-server 192.168.83.130:9092
在server.properties配置里的listeners
选项
4、查看topic
查看所有topic:
bin/kafka-topics.sh --list --bootstrap-server 192.168.136.131:9092
查看某个topic:
bin/kafka-topics.sh --describe --topic test_111 --bootstrap-server 192.168.136.131:9092
5、生产者
bin/kafka-console-producer.sh --broker-list 192.168.136.131:9092 --topic test_111
随时停止生产者客户端Ctrl-C
--broker-list
可以换成--bootstrap-server
6、消费者
bin/kafka-console-consumer.sh --bootstrap-server 192.168.136.131:9092 --topic test_111
随时停止生产者客户端Ctrl-C