kafka安装部署与使用

前言

1.kafka简介

Kafka是一个开源的分布式消息引擎/消息中间件,同时Kafka也是一个流处理平台。Kakfa支持以发布/订阅的方式在应用间传递消息,同时并基于消息功能添加了Kafka Connect、Kafka Streams以支持连接其他系统的数据(Elasticsearch、Hadoop等)

Kafka最核心的最成熟的还是他的消息引擎,所以Kafka大部分应用场景还是用来作为消息队列削峰平谷。另外,Kafka也是目前性能最好的消息中间件。

2.kafka架构

在Kafka集群(Cluster)中,一个Kafka节点就是一个Broker,消息由Topic来承载,可以存储在1个或多个Partition中。发布消息的应用为Producer、消费消息的应用为Consumer,多个Consumer可以促成Consumer Group共同消费一个Topic中的消息。

对象 简单说明
Broker Kafka节点
Topic 主题,用来承载消息
Partition 分区,用于主题分片存储
Producer 生产者,向主题发布消息的应用
Consumer 消费者,从主题订阅消息的应用
Consumer Group 消费者组,由多个消费者组成

1.环境准备

节点信息
kafka节点1 192.168.11.128
kafka节点2 192.168.11.129
kafka节点3 192.168.11.130
zookeeper部署

https://www.cnblogs.com/whiteY/p/14898503.html

2.下载安装包

下载地址:
https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/3.4.1/

3.安装部署(所有节点都需要配置注意区分不同的broker.id)

3.1.创建kafka相关目录

应用路径
mkdir -p /usr/local/kafka
数据目录
mkdir -p /usr/local/kafka/kafka_log

3.2.解压压缩包到应用路径

tar -zxf kafka_2.13-3.4.1.tgz -C /usr/local/kafka/

3.3kafka节点配置

cd /usr/local/kafka/kafka_2.13-3.4.1/config

vi server.properties

通用配置
配置日志目录、指定ZooKeeper服务器


# A comma separated list of directories under which to store log files
log.dirs=/kafka/logs

# root directory for all kafka znodes.
zookeeper.connect=192.168.11.128:12181,192.168.11.129:12181,192.168.11.130:12181

分节点配置

#kafka节点1

broker.id=0

#listeners=PLAINTEXT://:9092
listeners=PLAINTEXT://192.168.11.128:9092

#kafka节点2

broker.id=1

#listeners=PLAINTEXT://:9092
listeners=PLAINTEXT://192.168.11.129:9092

#kafka节点3
broker.id=2

#listeners=PLAINTEXT://:9092
listeners=PLAINTEXT://192.168.11.130:9092

4.启动kafka(三个节点都启动)

./bin/kafka-server-start.sh config/server.properties &

启动成功日志
[2023-08-30 22:58:40,558] INFO Kafka commitId: 8a516edc2755df89 (org.apache.kafka.common.utils.AppInfoParser)
[2023-08-30 22:58:40,558] INFO Kafka startTimeMs: 1693450720191 (org.apache.kafka.common.utils.AppInfoParser)
[2023-08-30 22:58:40,642] INFO [KafkaServer id=0] started (kafka.server.KafkaServer)


查看进程
[root@hadoop01 kafka_2.13-3.4.1]# jps
1926 QuorumPeerMain
11991 Jps
1640 SupportToolServer
11497 Kafka
You have new mail in /var/spool/mail/root
[root@hadoop01 kafka_2.13-3.4.1]# 

5.kafka测试

5.1创建topic


#在kafka节点1(Broker)上创建测试Tpoic:test-ken-io,这里我们指定了3个副本、1个分区

bin/kafka-topics.sh --create --bootstrap-server 192.168.11.128:9092 --replication-factor 3 --partitions 1 --topic test-ken-io

##报错Exception in thread "main" joptsimple.UnrecognizedOptionException: bootstrap-server is not a recognized option 则需要替换参数

bin/kafka-topics.sh --create --zookeeper 192.168.11.128:2181 --replication-factor 3 --partitions 1 --topic test-ken-io


#Topic在kafka节点1上创建后也会同步到集群中另外两个Broker:kafka节点2、kafka节点3

5.2查看topic

[root@hadoop01 kafka_2.13-3.4.1]# ./bin/kafka-topics.sh --list --bootstrap-server 192.168.11.128:9092
test-ken-io


5.3发送消息

#这里我们向Broker(id=0)的Topic=test-ken-io发送消息
bin/kafka-console-producer.sh --broker-list  192.168.11.128:9092  --topic test-ken-io

#消息内容
> nihao

5.4消费消息

#在Kafka节点2上消费Broker03的消息

bin/kafka-console-consumer.sh --bootstrap-server 192.168.11.130:9092 --topic test-ken-io --from-beginning

#在Kafka节点3上消费Broker02的消息

bin/kafka-console-consumer.sh --bootstrap-server 192.168.11.129:9092 --topic test-ken-io --from-beginning


#然后均能收到消息
nihao

#这是因为这两个消费消息的命令是建立了两个不同的Consumer
#如果我们启动Consumer指定Consumer Group Id就可以作为一个消费组协同工,1个消息同时只会被一个Consumer消费到

bin/kafka-console-consumer.sh --bootstrap-server 192.168.11.130:9092 --topic test-ken-io --from-beginning --group testgroup_ken

bin/kafka-console-consumer.sh --bootstrap-server 192.168.11.129:9092 --topic test-ken-io --from-beginning --group testgroup_ken

#现在发现在kafka节点1上生产数据只有一个消费者可以拿到数据

6.备注

Kafka常用配置项说明
配置项 默认值/示例值 说明
broker.id 0 Broker唯一标识
listeners PLAINTEXT://192.168.11.128:9092 监听信息,PLAINTEXT表示明文传输
log.dirs /usr/local/kafka/kafka_log kafka数据存放地址,可以填写多个。用","间隔
message.max.bytes message.max.bytes 单个消息长度限制,单位是字节
num.partitions 1 默认分区数
log.flush.interval.messages Long.MaxValue 在数据被写入到硬盘和消费者可用前最大累积的消息的数量
log.flush.interval.ms Long.MaxValue 在数据被写入到硬盘前的最大时间
log.flush.scheduler.interval.ms Long.MaxValue 检查数据是否要写入到硬盘的时间间隔
log.retention.hours 24 控制一个log保留时间,单位:小时
zookeeper.connect 192.168.11.128:12181,192.168.11.129:12181,192.168.11.130:12181 ZooKeeper服务器地址,多台用","间隔

7.kafka 管控平台推荐

Know Streaming

Know Streaming 是一套云原生的 Kafka 管控平台,脱胎于众多互联网内部多年的 Kafka 运营实践经验,专注于 Kafka 运维管控、监控告警、资源治理、多活容灾等核心场景,在用户体验、监控、运维管控上进行了平台化、可视化、智能化的建设,提供

一系列特色的功能,极大地方便了用户和运维人员的日常使用,让普通运维人员都能成为 Kafka 专家。

https://doc.knowstreaming.com/product/1-brief-introduction

posted @ 2023-08-31 11:51  whiteY  阅读(274)  评论(0)    收藏  举报