Flink学习笔记:Kafka集群搭建

集群规划

Hostip
k8s-node3192.168.0.52
k8s-node5192.168.0.109
k8s-node8192.168.0.115

环境准备、

  • 安装好JDK并设置好环境变量
  • 关闭防火墙
  • ssh免密登录
  • 搭建zookeeper集群
    [集群搭建方式见]Zookeeper集群搭建

kafka安装包下载解压

[root@k8s-node5 config]# wget https://archive.apache.org/dist/kafka/3.0.1/kafka_2.12-3.0.1.tgz
[root@k8s-node5 software]# tar -xzvf kafka_2.12-3.0.1.tgz 
[root@k8s-node5 software]# cd kafka_2.12-3.0.1/
[root@k8s-node5 kafka_2.12-3.0.1]# cd config/
[root@k8s-node5 config]# view server.properties 

配置文件server.properties

# 集群的唯一ID
broker.id=0

# 网络线程的处理数
num.network.threads=3

# I/O处理的线程数
num.io.threads=8

# 发送缓存区大小
socket.send.buffer.bytes=102400

# 接收缓冲区大小
socket.receive.buffer.bytes=102400

# Kafka请求或者接收请求的最大字节数
socket.request.max.bytes=104857600

# 日志目录
log.dirs=/home/software/kafka_2.12-3.0.1/kafka-logs/

# 默认的分区数,一个topic默认只有一个分区.
num.partitions=1

offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1

# The number of messages to accept before forcing a flush of data to disk
# 日志刷入磁盘的间隔周期
#log.flush.interval.ms=1000

# 日志保留时长(小时)
log.retention.hours=168

# 日志保留的最大大小
#log.retention.bytes=1073741824

# 这个个参数是:因为kafka的消息是以追加的形式落地到文件,当超过这个值的时候,kafka会新起一个文件
log.segment.bytes=1073741824

# 日志时效时间检测的间隔周期
log.retention.check.interval.ms=300000

# zookeper集群地址,使用逗号分隔开
zookeeper.connect=k8s-node3:2181,k8s-node6:2181,k8s-node8:2181

# zookeeper连接超时时间
zookeeper.connection.timeout.ms=18000

group.initial.rebalance.delay.ms=0

将修改好配置文件的安装包分发到其他两台服务器,并修改broker.id为不同的值。

启动器群

在三台服务器上分别执行如下命令,启动集群

[root@k8s-node8 bin]# cd /home/software/kafka_2.12-3.0.1/bin
[root@k8s-node8 bin]# ./kafka-server-start.sh -daemon ../config/server.properties
[root@k8s-node8 bin]# jps
7629 Kafka

可以查看到kafka正常启动

kafka-topics.sh操作

创建topic

  • –bootstrap-server: 指定kafka的服务器节点,hostname:port,多个节点使用“,”分割,eg:k8s-node3:9092,k8s-node5:9092
  • –create: 指定操作类型为创建topic
  • –topic :指定创建的topic的名称
  • –partitions 1:指定分区为1
  • –replication-factor 1
  • –config cleanup.policy=compact
[root@k8s-node3 bin]# cd /home/software/kafka_2.12-3.0.1/bin/
[root@k8s-node3 bin]# ./kafka-topics.sh --bootstrap-server localhost:9092 --create --topic mytopic 
Created topic mytopic.

查看topic列表

[root@k8s-node3 bin]# ./kafka-topics.sh --bootstrap-server localhost:9092  --list
__consumer_offsets
mytopic

查看指定topic的具体信息

[root@k8s-node3 bin]# ./kafka-topics.sh --bootstrap-server localhost:9092 --topic mytopic --describe 
Topic: mytopic	TopicId: qKovnrJDQluPIKjL9inYXw	PartitionCount: 1	ReplicationFactor: 1	Configs: segment.bytes=1073741824
	Topic: mytopic	Partition: 0	Leader: 0	Replicas: 0	Isr: 0

删除topic

[root@k8s-node3 bin]# ./kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic mytopic 
[root@k8s-node3 bin]# ./kafka-topics.sh --bootstrap-server localhost:9092 --list
__consumer_offsets

问题:有时候会因为一些特殊导致topic没有被彻底删除,明明在–list中看不到该topic,但是创建时却提示,该topic已存在,这种情况下要怎么样彻底删除呢?

[root@k8s-node3 bin]# ./kafka-topics.sh --bootstrap-server localhost:9092 --create --topic sensor 
Error while executing topic command : Topic 'sensor' already exists.
[2022-04-28 04:06:02,041] ERROR org.apache.kafka.common.errors.TopicExistsException: Topic 'sensor' already exists.
 (kafka.admin.TopicCommand$)

  • 一、检查topic相关的存储目录(在server.properties文件log.dirs配置的目录),看是否被删除,如果没有删除手工删除
  • 二、在zookeeper上查看,检查是否被删掉,如下所示,发现果然没有被删除掉
[root@k8s-node3 bin]# zkCli.sh 
[zk: localhost:2181(CONNECTED) 4] ls /brokers/topics
[__consumer_offsets, mytopic, sensor, sensor3]
[zk: localhost:2181(CONNECTED) 5] 

  • 三、在zookeeper中删除topic信息
[root@k8s-node3 bin]# zkCli.sh 
[zk: localhost:2181(CONNECTED) 4] ls /brokers/topics
[__consumer_offsets, mytopic, sensor, sensor3]
[zk: localhost:2181(CONNECTED) 5] deleteall /brokers/topics/sensor
[zk: localhost:2181(CONNECTED) 5] deleteall /brokers/topics/sensor3

以上操作完毕后,再次执行创建topic就能够创建成功

[root@k8s-node3 bin]# ./kafka-topics.sh --bootstrap-server k8s-node3:9092,k8s-node5:9092,k8s-node8:9092 --create --topic sensor 
Created topic sensor.
[root@k8s-node3 bin]# 

运行一个productor,发送消息

[root@k8s-node3 bin]# ./kafka-console-producer.sh --broker-list k8s-node3:9092,k8s-node5:9092 --topic mytopic 
>hello,world
>hello,world

运行一个consumer,接收消息

[root@k8s-node3 bin]# ./kafka-console-consumer.sh --bootstrap-server 192.168.0.52:9092 --topic mytopic
hello,world
hello,world

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值