系统环境:

Kafka 简介:

Kafka 是一个开源的分布式流处理平台和消息队列系统,最初由 LinkedIn 公司开发,后来成为 Apache 软件基金会的顶级项目。以下是 Kafka 的一些关键特点和用途:

  1. 高吞吐量:Kafka 能够处理大规模数据流,具有高吞吐量和低延迟,适用于处理海量数据。

  2. 分布式架构:Kafka 是基于分布式架构设计的,可以水平扩展以处理大量数据和高并发请求。

  3. 持久性:Kafka 可以持久化数据,确保数据不会丢失,并支持数据的持久化存储和复制。

  4. 发布-订阅模型:Kafka 使用发布-订阅模型,允许生产者将消息发布到主题(topic),而消费者可以订阅这些主题并接收消息。

  5. 数据流处理:Kafka 提供了流处理功能,可以实时处理数据流并进行复杂的数据分析和处理。

  6. 容错性:Kafka 具有高度的容错性,能够在节点故障时保持数据的可靠性和一致性。

  7. 水平扩展:Kafka 支持水平扩展,可以根据需求增加节点以提高性能和容量。

  8. 社区支持:作为 Apache 顶级项目,Kafka 拥有活跃的社区支持和持续的更新和改进。

  9. 应用场景:Kafka 在实时日志处理、数据采集、事件驱动架构、消息队列等方面被广泛应用,特别适用于构建大规模实时数据处理系统。

总的来说,Kafka 是一个强大的分布式流处理平台和消息队列系统,为构建实时数据处理和流式应用提供了可靠的基础设施。

集群部署:

先决条件:

1.服务器必须要有 java 环境。关于 java 环境安装,请参考:

2.必须先配置好 zookeeper 集群环境。关于 zookeeper 集群部署,请参考:

安装服务

1.点击这里下载 Kafka 二进制压缩包 到服务器的 /usr/local/src/ 目录下:

1
$ sudo wget -O /usr/local/src//kafka_2.12-3.7.0.tgz https://downloads.apache.org/kafka/3.7.0/kafka_2.12-3.7.0.tgz

2.原地解压:

1
$ sudo tar -zxf /usr/local/src/kafka_2.12-3.7.0.tgz -C /usr/local/src/

3.将解压目录移动到 /usr/local/ 目录下并重命名为 kafka:

1
$ sudo mv /usr/local/src/kafka_2.12-3.7.0 /usr/local/kafka

4.创建 kafka 日志存放目录:

1
$ sudo mkdir -p /data/kafka/logs

5.将 Kafka 安装目录和日志存放目录所属主和组都修改为当前用户:

1
$ sudo chown -R ${USER}:${USER} /usr/local/kafka/ /data/kafka/

配置服务:

1.备份 Kafka 主配置文件(修改配置文件养成备份文件的习惯):

1
$ cp /usr/local/kafka/config/server.properties{,.bak}

2.编辑 Kafka 主配置文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ sudo cat << EOF >/usr/local/kafka/config/server.properties
# 每个节点的 broker.id 要唯一。这个节点为 0, 则下一个要为 1,以此类推!
broker.id=0
listeners=PLAINTEXT://192.168.3.135:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/data/kafka/logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.retention.check.interval.ms=300000
zookeeper.connect=192.168.3.135:2181,192.168.3.136:2181,192.168.3.137:2181
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0
EOF

启动服务

1.在 /lib/systemd/system/ 目录下创建 Kafka 启动脚本文件 kafka.service,内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ sudo bash -c "cat << EOF > /lib/systemd/system/kafka.service
[Unit]
Description=Apache Kafka server (broker)
Documentation=http://kafka.apache.org/documentation.html
Requires=network.target remote-fs.target
After=network.target remote-fs.target zookeeper.service

[Service]
Type=simple
#jdk路径
Environment=JAVA_HOME=/usr/local/jdk1.8.0_401
ExecStart=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
ExecStop=/usr/local/kafka/bin/kafka-server-stop.sh
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target
EOF"

2.执行命令 systemctl daemon-reload 加载启动脚本

1
$ sudo systemctl daemon-reload

3.启动 Kafka 服务,并将其配置成开机启动:

1
$ sudo systemctl enable --now kafka.service

4.查看 Kafka 启动状态:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ sudo systemctl status kafka.service --no-pager
● kafka.service - Apache Kafka server (broker)
Loaded: loaded (/usr/lib/systemd/system/kafka.service; enabled; preset: enabled)
Active: active (running) since Fri 2024-05-31 00:44:43 UTC; 1min 48s ago
Docs: http://kafka.apache.org/documentation.html
Main PID: 24167 (java)
Tasks: 72 (limit: 4614)
Memory: 356.1M (peak: 356.5M)
CPU: 2.949s
CGroup: /system.slice/kafka.service
└─24167 /usr/local/jdk1.8.0_401/bin/java -Xmx1G -Xms1G -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupa…

May 31 00:44:44 vm005-ubuntu2404 kafka-server-start.sh[24167]: [2024-05-31 00:44:44,522] INFO [Controller id=0, targetBrokerId=0] …Client)
May 31 00:44:44 vm005-ubuntu2404 kafka-server-start.sh[24167]: [2024-05-31 00:44:44,537] INFO [/config/changes-event-process-threa…Thread)
May 31 00:44:44 vm005-ubuntu2404 kafka-server-start.sh[24167]: [2024-05-31 00:44:44,547] INFO [SocketServer listenerType=ZK_BROKER…Server)
May 31 00:44:44 vm005-ubuntu2404 kafka-server-start.sh[24167]: [2024-05-31 00:44:44,549] INFO Awaiting socket connections on 192.1…ceptor)
May 31 00:44:44 vm005-ubuntu2404 kafka-server-start.sh[24167]: [2024-05-31 00:44:44,558] INFO Kafka version: 3.7.0 (org.apache.kaf…Parser)
May 31 00:44:44 vm005-ubuntu2404 kafka-server-start.sh[24167]: [2024-05-31 00:44:44,558] INFO Kafka commitId: 2ae524ed625438c5 (or…Parser)
May 31 00:44:44 vm005-ubuntu2404 kafka-server-start.sh[24167]: [2024-05-31 00:44:44,558] INFO Kafka startTimeMs: 1717116284557 (or…Parser)
May 31 00:44:44 vm005-ubuntu2404 kafka-server-start.sh[24167]: [2024-05-31 00:44:44,559] INFO [KafkaServer id=0] started (kafka.se…Server)
May 31 00:44:44 vm005-ubuntu2404 kafka-server-start.sh[24167]: [2024-05-31 00:44:44,672] INFO [zk-broker-0-to-controller-forwardin…Thread)
May 31 00:44:44 vm005-ubuntu2404 kafka-server-start.sh[24167]: [2024-05-31 00:44:44,738] INFO [zk-broker-0-to-controller-alter-par…Thread)