Kafka——Kafka搭建及问题解决

11 篇文章 1 订阅
6 篇文章 1 订阅

Kafka——Kafka搭建及问题解决


Kafka简介

Kafka是基于发布与订阅的消息系统设计的分布式流处理平台,有scale和java编写开发,官方对其描述为拥有三大功能:

  • Publish and subscribe to streams of records, similar to a message queue or enterprise messaging system.(发布订阅流记录,与消息队列、企业级消息系统相似)
  • Store streams of records in a fault-tolerant durable way.(以容错、持久的方式存储记录流)
  • Process streams of records as they occur.(实时流处理)

Kafka的数据单元是消息,消息通过主题进行分类,主题可以分为若干个分区,一个分区就是一个提交日志,消息以追加的方式写入分区,然后以先入先出的顺序进行读取。对于Kafka的用户分为两种:生产者消费者。生产者用于创建消息,消费者又称为订阅者,用于读取消息。一个独立的Kafka服务器成为broker,broker接收生产者发送的消息并存入磁盘,并且broker为消费者提供服务,对读取请求做出相应。broker是集群的组成部分,broker集群通过zookeeper进行协调管理。

Kafka特点

  • 多个生产者
  • 多个消费者
  • 基于磁盘的数据存储
  • 伸缩性、高性能

Kafka集群搭建准备

服务器三台:
192.168.108.128
192.168.108.129
192.168.108.130

Kafka版本:kafka_2.12-2.3.0.tgz

Kafka需要依托ZooKeeper做集群管理,建议不使用Kafka安装包自带的ZooKeeper自己搭建ZooKeeper集群,ZooKeeper搭建过程参考:

ZooKeeper——ZooKeeper搭建及问题解决

下载并解压

tar -zxf kafka_2.12-2.3.0.tgz
cd kafka_2.12-2.3.0

解压后的目录结构

drwxr-xr-x. 3 root root  4096 826 11:03 bin
drwxr-xr-x. 2 root root  4096 826 11:17 config
drwxr-xr-x. 2 root root  4096 826 10:47 libs
-rw-r--r--. 1 root root 32216 620 04:43 LICENSE
drwxr-xr-x. 2 root root  4096 826 15:01 logs
-rw-r--r--. 1 root root   337 620 04:43 NOTICE
drwxr-xr-x. 2 root root    44 620 04:44 site-docs

修改配置

修改配置文件,位置文件位于config文件夹中,进入config后,仅需修改server.properties配置文件即可。在配置文件中需要修改两处配置(broker.id和zookeeper.connect),这两个配置决定了broker所属的集群和id

192.168.108.128

broker.id=1 #集群中broker的唯一id整数表示
listeners=PLAINTEXT://192.168.108.128:9092 #监听地址和端口
log.dirs=/tmp/kafka-logs #日志存储地址
zookeeper.connect=192.168.108.128:2181,192.168.108.129:2181,192.168.108.130:2181 #zookeeper集群
zookeeper.connection.timeout.ms=60000 #zookeeper连接超时时间,建议长一点

192.168.108.129

broker.id=2
listeners=PLAINTEXT://192.168.108.129:9092
log.dirs=/tmp/kafka-logs
zookeeper.connect=192.168.108.128:2181,192.168.108.129:2181,192.168.108.130:2181
zookeeper.connection.timeout.ms=6000

192.168.108.130

broker.id=3
listeners=PLAINTEXT://192.168.108.130:9092
log.dirs=/tmp/kafka-logs
zookeeper.connect=192.168.108.128:2181,192.168.108.129:2181,192.168.108.130:2181
zookeeper.connection.timeout.ms=6000

配置文件分为broker配置和主题配置两大类
broker配置:

属性名说明默认值
broker.idbroker唯一标识符,可以为任意整数,需要与zookeeper的myid值对应。默认值为0
listeners监听的地址和ip,以前的版本分为host和port两个属性
zookeeper.connect配置管理broker元数据的zookeeper地址,多个地址用逗号分隔
zookeeper.connection.timeout.mszookeeper连接超时时长
log.dirs存放消息日志的目录
主题配置:
属性名默认值
num.partitions每个主题包含的分区数
log.retention.hours设置数据保留时间,默认168小时
log.retention.bytes通过消息字节数判断是否过期,如果主题大小超过log.retention.bytes值,则删除
log.segment.bytes日志大小达到log.segment.bytes值,关闭日志并开启一新日志进行记录

Kafka集群启动

在三台服务器上分别启动kafka

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

...
[2019-08-26 11:31:09,152] INFO Kafka version: 2.3.0 (org.apache.kafka.common.utils.AppInfoParser)
[2019-08-26 11:31:09,152] INFO Kafka commitId: fc1aaa116b661c8a (org.apache.kafka.common.utils.AppInfoParser)
[2019-08-26 11:31:09,152] INFO Kafka startTimeMs: 1566790269114 (org.apache.kafka.common.utils.AppInfoParser)
[2019-08-26 11:31:09,153] INFO [KafkaServer id=1] started (kafka.server.KafkaServer)

输入jps查看java进程

40289 Jps
39417 Kafka
39341 QuorumPeerMain

有Kafka进程,启动成功

搭建时遇到的问题

Zookeeper客户端连接超时

kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connecting

解决方案

  1. 服务器zookeeper配置文件server.x和kafka配置broker.id的编号不一致,修改Kafka配置文件中的broker.id与zoo.cfg中的server.x一致
  2. 重启zookeeper集群后,再启动Kafka,问题解决

参考

Kafka——Kafka相关操作

Kafka——SpringBoot整合Kafka

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值