Kafka Broker

一、Kafka Broker工作流程

1.1 Zookeeper存储的Kafka信息

(1)启动Zookeeper客户端

[atguigu@hadoop102 zookeeper-3.5.7]$ bin/zkCli.sh

(2)通过ls命令可以查看kafka相关信息。

[zk: localhost:2181(CONNECTED) 2] ls /kafka

1.2 Kafka Broker总体工作流程

1)模拟Kafka上下线,Zookeeper中数据变化

(1)查看/kafka/brokers/ids路径上的节点。

[zk: localhost:2181(CONNECTED) 2] ls /kafka/brokers/ids

[0, 1, 2]

(2)查看/kafka/controller路径上的数据。

[zk: localhost:2181(CONNECTED) 15] get /kafka/controller

{"version":1,"brokerid":0,"timestamp":"1637292471777"}

(3)查看/kafka/brokers/topics/first/partitions/0/state路径上的数据。

[zk: localhost:2181(CONNECTED) 16] get /kafka/brokers/topics/first/partitions/0/state

{"controller_epoch":24,"leader":0,"version":1,"leader_epoch":18,"isr":[0,1,2]}

(4)停止hadoop104上的kafka。

[atguigu@hadoop104 kafka]$ bin/kafka-server-stop.sh

(5)再次查看/kafka/brokers/ids路径上的节点。

[zk: localhost:2181(CONNECTED) 3] ls /kafka/brokers/ids

[0, 1]

(6)再次查看/kafka/controller路径上的数据。

[zk: localhost:2181(CONNECTED) 15] get /kafka/controller

{"version":1,"brokerid":0,"timestamp":"1637292471777"}

(7)再次查看/kafka/brokers/topics/first/partitions/0/state路径上的数据。

[zk: localhost:2181(CONNECTED) 16] get /kafka/brokers/topics/first/partitions/0/state

{"controller_epoch":24,"leader":0,"version":1,"leader_epoch":18,"isr":[0,1]}

(8)启动hadoop104上的kafka。

[atguigu@hadoop104 kafka]$ bin/kafka-server-start.sh -daemon ./config/server.properties

(9)再次观察(1)、(2)、(3)步骤中的内容。

1.3 Broker重要参数

参数名称

描述

replica.lag.time.max.ms

ISR中,如果Follower长时间未向Leader发送通信请求或同步数据,则该Follower将被踢出ISR。该时间阈值,默认30s

auto.leader.rebalance.enable

默认是true。 自动Leader Partition 平衡。

leader.imbalance.per.broker.percentage

默认是10%。每个broker允许的不平衡的leader的比率。如果每个broker超过了这个值,控制器会触发leader的平衡。

leader.imbalance.check.interval.seconds

默认值300秒。检查leader负载是否平衡的间隔时间。

log.segment.bytes

Kafka中log日志是分成一块块存储的,此配置是指log日志划分 成块的大小,默认值1G。

log.index.interval.bytes

默认4kbkafka里面每当写入了4kb大小的日志(.log),然后就往index文件里面记录一个索引。

log.retention.hours

Kafka中数据保存的时间,默认7天。

log.retention.minutes

Kafka中数据保存的时间,分钟级别,默认关闭。

log.retention.ms

Kafka中数据保存的时间,毫秒级别,默认关闭。

log.retention.check.interval.ms

检查数据是否保存超时的间隔,默认是5分钟

log.retention.bytes

默认等于-1,表示无穷大。超过设置的所有日志总大小,删除最早的segment。

log.cleanup.policy

默认是delete,表示所有数据启用删除策略;

如果设置值

<think>好的,用户想了解关于Kafka Broker的配置与管理,包括原理、配置和故障排查。首先,我需要整理Kafka Broker的核心概念和主要配置参数。记得要引用提供的参考资料中的信息,比如分区的存储限制和Controller Leader的作用。 首先,Kafka Broker的基本配置参数,比如broker.id、listeners这些是必须提到的。然后存储配置部分,log.dirs和分层存储相关的内容,参考引用[1]提到的分区大小受单个挂载点限制,这点需要强调。还有Zookeeper的连接配置,确保集群协调正常。 接下来是管理部分,包括分区管理和副本分配,这里引用[2]提到的Controller Leader负责分区副本分配和Leader选举,说明Controller的作用。性能调优方面,网络和I/O的配置参数,比如num.network.threads和num.io.threads,需要详细解释。 故障排查部分,常见的如磁盘空间不足、网络问题、Leader选举故障,这些都是用户可能遇到的。根据引用[1],分区大小受限,所以磁盘空间的问题要重点说明。网络问题涉及配置是否正确,比如advertised.listeners,可能和引用[3]中的集群IP列表配置有关联。 最后生成相关问题时,要涵盖配置优化、性能监控、高可用保障、磁盘扩展等方面,确保覆盖用户可能感兴趣的方向。检查引用是否正确,比如引用[1]和[2]在适当的位置标注,确保回答准确可靠。</think>### Kafka Broker 配置与管理详解 #### 一、核心配置参数 1. **基础配置** - `broker.id`:唯一标识Broker的整数,集群内不可重复[^3]。 - `listeners`:Broker监听地址,格式为`PLAINTEXT://host:port`,如`PLAINTEXT://192.168.1.10:9092`。 - `zookeeper.connect`:ZooKeeper集群地址,用于Broker协调元数据,如`zk1:2181,zk2:2181/kafka`[^2]。 2. **存储配置** - `log.dirs`:数据存储目录,支持多个路径(逗号分隔),分区数据按轮询分配存储位置[^1]。 - `log.segment.bytes`:单个日志段文件大小(默认1GB),影响数据滚动和检索效率。 - `log.retention.hours`:数据保留时间,超过设定时间的数据自动清理[^1]。 3. **网络与性能** - `num.network.threads`:处理网络请求的线程数(默认3)。 - `num.io.threads`:处理磁盘I/O的线程数(默认8),需根据磁盘性能调整。 - `queued.max.requests`:等待处理的请求队列上限(默认500)。 #### 二、关键管理操作 1. **分区管理** - 分区是Kafka的最小存储单元,无法跨Broker或磁盘细分。 - 手动分区分配命令示例: ```bash kafka-topics.sh --alter --topic test-topic --partitions 6 --bootstrap-server broker1:9092 ``` 2. **副本与Leader选举** - Controller Leader负责管理分区副本分配和Leader选举。 - 查看副本状态命令: ```bash kafka-topics.sh --describe --topic test-topic --bootstrap-server broker1:9092 ``` #### 三、故障排查指南 1. **磁盘空间不足** - **现象**:生产者写入失败,日志报`NotEnoughReplicasException`。 - **解决**:清理过期数据或扩展存储目录(需满足`log.dirs`多路径配置)。 2. **Leader不可用** - **现象**:消费者无法读取数据,日志报`LeaderNotAvailableException`。 - **解决**:检查Controller Leader状态,重启故障Broker或触发手动Leader选举。 3. **网络通信异常** - **现象**:Broker间同步延迟,ZooKeeper会话超时。 - **解决**:验证`advertised.listeners`配置是否暴露正确IP,检查防火墙规则[^3]。 #### 四、性能优化建议 1. **分层存储配置** - 使用冷热数据分离策略,将旧数据迁移到低成本存储,需配合`log.retention`策略使用。 2. **JVM调优** - 堆内存设置:建议4-6GB,避免过大导致GC停顿。 - G1垃圾回收器参数示例: ``` -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金州饿霸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值