下载

官方下载地址:Apache Kafka

选择 2.8.1 版本:下载链接

核心配置文件解读

解压

1
tar -zxvf kafka_2.13-2.8.1.tgz

核心配置文件:server.properties 解读

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
################### Server Basics ###################
# broker 的集群中全局唯一编号,不能重复,要求是正数
broker.id=0

################### Socket Server Settings ###################
# Kafka 服务将要监听到主机地址和端口号
listeners = PLAINTEXT://your.host.name:9092
# kafka 服务对外公布(advertise)的主机地址和端口号。当容器化或者虚拟化的时候,可能会用到
advertised.listeners=PLAINTEXT://your.host.name:9092
# broker处理消息的最大线程数,一般情况下数量为cpu核数
num.network.threads=3
# 用来处理磁盘 IO 的现成数量,一般情况下数量为cpu核数2倍
num.io.threads=8
# 发送套接字的缓冲区大小
socket.send.buffer.bytes=102400
# 接收套接字的缓冲区大小
socket.receive.buffer.bytes=102400
# 请求套接字的缓冲区大小
socket.request.max.bytes=104857600

################### Log Basics ###################
# kafka数据的存放地址,多个地址的话用逗号分割,多个目录分布在不同磁盘上可以提高读写性能
log.dirs=/tmp/kafka-logs
# topic 在当前 broker 上的分区个数
# 若是在topic创建时候没有指定的话会被topic创建时的指定参数覆盖
num.partitions=1
# 数据目录用于日志恢复启动和关闭时的线程数量
# 因为这些线程只是服务器启动和关闭时会用到。所以完全可以设置大量的线程来达到并行操作的目的
# 注意,这个参数指的是每个日志目录的线程数
# 比如本参数设置为8,而log.dirs设置为了三个路径,则总共会启动24个线程
num.recovery.threads.per.data.dir=1

################### Internal Topic Settings ###################
# 用于配置offset记录的topic的partition的副本个数
offsets.topic.replication.factor=1
# 事务主题的复制因子
transaction.state.log.replication.factor=1
# 覆盖事务主题的min.insync.replicas配置
transaction.state.log.min.isr=1

################### Log Flush Policy 日志刷新策略###################
# 表示每当消息记录数达到1000时flush一次数据到磁盘
log.flush.interval.messages=10000
# 用于控制将消息记录刷新到磁盘的时间间隔;如果消息数量始终没有达到阀值
# 但是离上一次磁盘同步的时间间隔达到阀值,也将flush到磁盘
log.flush.interval.ms=1000

################### Log Retention Policy 日志保留策略 ###################
# 数据文件保留多长时间。
# 存储的最大时间超过这个时间后
# 会根据log.cleanup.policy配置执行数据清除策略
log.retention.hours=168
# topic每个分区的最大文件大小
# 一个topic的大小限制 = 分区数*log.retention.bytes
# -1没有大小限制
# log.retention.bytes和log.retention.minutes任意一个达到要求,都会执行删除,会被topic创建时的指定参数覆盖
log.retention.bytes=1073741824
# topic的分区是以一堆segment文件存储的
# 这个参数控制每个segment的大小,会被topic创建时的指定参数覆盖
log.segment.bytes=1073741824
# 文件大小检查的周期时间,是否触发 log.cleanup.policy中设置的策略
log.retention.check.interval.ms=300000

################### Zookeeper ###################
# zookeeper集群的地址,可以是多个,多个之间用逗号分割
zookeeper.connect=localhost:2181
# ZooKeeper的连接超时时间
zookeeper.connection.timeout.ms=18000

################### Group Coordinator Settings ###################
# 用于设置group开启rebalance的延时时间
# 这段延时期间允许更多的consumer加入组,避免不必要的JoinGroup与SyncGroup之间的切换
group.initial.rebalance.delay.ms=0

启动

需要配置好 java 的环境变量,启动 zookeeper

1
/root/zookeeper/bin/zkServer.sh start

关于 java 环境变量配置:Centos7 下安装并配置 Java

同理,顺便配置了 Kafka 的环境变量

1
2
3
# Kafka
export KAFKA_HOME=/root/kafka
export PATH=$KAFKA_HOME/bin:$PATH

以守护进程的方式,指定配置文件启动 Kafka

1
kafka-server-start.sh -daemon /root/kafka/config/server.properties

查看是否启动

1
jps