背景:

通过ambari安装kafka之后,两台broker能正常启动,一台无法正常启动

知识介绍:

broker id是broker的唯一标识,不能和其他broker冲突

在kafka有两种配置方式broker.id的方式

  1.手动指定broker.id=1001

  2.通过配置 broker.id.generation.enable=true,让服务器自动生成

        生成逻辑如下:

              a.获取reserved.broker.max.id的值(默认为1000)+zk节点/brokers/seqid 的dataVersion号(从0开始)+1,所以broker.id 默认会从1001开始;

              b.将该值写入数据目录(log.dirs指定)中的meta.properties中;

              c.在启动时优先从meta.properties中读取broker.id,若不存在,则走a生成broker.id;

报错原因

因为某种bug或者巧合,两个broker都获取到了seqid=0时的配置,都以为自己的broker.id=1001

解决办法

将其中一台broker的meta.propterties中的1001改成1002即可

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐