Kafka 核心技术与实战
胡夕
Apache Kafka Committer,老虎证券技术总监
52815 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 47 讲
开篇词 (1讲)
结束语 (1讲)
Kafka 核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

28 | 主题管理知多少?

kafka-console-consumer.sh
执行kafka-reassign-partitions脚本
创建json文件
kafka-reassign-partitions脚本
kafka-configs脚本
kafka-reassign-partitions脚本
kafka-configs脚本
kafka-topics脚本
重启相应的Broker
使用jstack命令查看线程状态
在ZooKeeper中执行rmr /controller
手动删除磁盘上的分区目录
手动删除ZooKeeper节点
类似操作
查看消息内容
修改副本数
不手动创建或修改
kafka-topics脚本
主题分区迁移
修改主题限速
变更副本数
修改主题级别参数
修改主题分区
kafka-topics脚本
kafka-topics脚本
__consumer_offsets占用太多的磁盘
主题删除失败
内部主题__transaction_state
内部主题__consumer_offsets
删除主题
修改主题
查询主题
创建主题
开放讨论
小结
常见主题错误处理
特殊主题的管理与运维
主题日常管理
Kafka主题管理

该思维导图由 AI 生成,仅供参考

你好,我是胡夕。今天我想和你讨论一下 Kafka 中的主题管理,包括日常的主题管理、特殊主题的管理与运维以及常见的主题错误处理。

主题日常管理

所谓的日常管理,无非就是主题的增删改查。你可能会觉得,这有什么好讨论的,官网上不都有命令吗?这部分内容的确比较简单,但它是我们讨论后面内容的基础。而且,在讨论的过程中,我还会向你分享一些小技巧。另外,我们今天讨论的管理手段都是借助于 Kafka 自带的命令。事实上,在专栏后面,我们还会专门讨论如何使用 Java API 的方式来运维 Kafka 集群。
我们先来学习一下如何使用命令创建 Kafka 主题。Kafka 提供了自带的 kafka-topics 脚本,用于帮助用户创建主题。该脚本文件位于 Kafka 安装目录的 bin 子目录下。如果你是在 Windows 上使用 Kafka,那么该脚本位于 bin 路径的 windows 子目录下。一个典型的创建命令如下:
bin/kafka-topics.sh --bootstrap-server broker_host:port --create --topic my_topic_name --partitions 1 --replication-factor 1
create 表明我们要创建主题,而 partitions 和 replication factor 分别设置了主题的分区数以及每个分区下的副本数。如果你之前使用过这个命令,你可能会感到奇怪:难道不是指定 --zookeeper 参数吗?为什么现在变成 --bootstrap-server 了呢?我来给出答案:从 Kafka 2.2 版本开始,社区推荐用 --bootstrap-server 参数替换 --zookeeper 参数,并且显式地将后者标记为“已过期”,因此,如果你已经在使用 2.2 版本了,那么创建主题请指定 --bootstrap-server 参数。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Kafka主题管理是Kafka集群中的重要组成部分,涉及主题的创建、查询、修改和删除等日常管理操作。文章首先介绍了使用kafka-topics脚本创建和查询主题的命令,并强调了从Kafka 2.2版本开始推荐使用--bootstrap-server参数替代--zookeeper参数。接着详细讨论了主题的修改操作,包括修改分区数、主题级别参数、副本数、限速以及分区迁移。最后,文章提到了删除主题的操作,并指出删除操作是异步的,需要耐心等待。 此外,文章还介绍了Kafka内部主题__consumer_offsets和__transaction_state的管理方法,以及常见主题错误处理方法。对于__consumer_offsets主题,文章提到了如何手动修改副本数以及查看消费者组提交的位移数据和状态信息。对于常见错误,文章提供了解决方法,包括主题删除失败和__consumer_offsets占用过多磁盘空间的处理建议。 总的来说,本文深入浅出地介绍了Kafka主题管理的方方面面,为读者提供了全面的了解和操作指南。同时,通过介绍内部主题的管理和常见错误处理,为读者提供了更深入的技术知识和问题解决思路。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Kafka 核心技术与实战》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(36)

  • 最新
  • 精选
  • Fever
    因为多个broker节点都冗余有分区的数据,减少分区数需要操作多个broker且需要迁移该分区数据到其他分区。如果是按消息key hash选的分区,那么迁移就不知道迁到哪里了,因为只有业务代码可以决定放在哪。不知道我想的对不对。

    作者回复: 我觉得很有道理:)

    2019-08-06
    4
    35
  • lmtoo
    如果增加分区,那旧分区的数据会自动转移吗?

    作者回复: 不会的。

    2019-08-06
    14
  • Ryoma
    新增分区后,之前按 key 保证消息有序性,是否会因为新增分区,导致指定 key 被分配到其它分区

    作者回复: 会的

    2020-02-21
    2
    11
  • 玉剑冰锋
    想请教一下老师,kafka集群中(3台)对topic数量和partitions数量有限制吗?或者有参考值吗?

    作者回复: 没有硬性要求,不过新一点的Kafka集群上最好不要超过2000个topic

    2019-08-06
    8
  • 柯察金
    老师,关于限速有两个问题: 第一,设置 topic 限速的适合,是针对主题副本所在的 broker 设置参数,那么这样会影响到其他的主题吗? 第二,现在 kafka 限速是没有租户隔离的,如果要针对一个主题内的租户进行限速,有什么好的方案吗

    作者回复: 1. 针对单个topic的不会影响其他主题 2. Kafka支持userID和clientID级别的限速设置

    2019-12-15
    6
  • 皇家救星
    老师,您好。请问您能不能介绍kafka怎么优雅停止集群中的一台broker。因为根据您的文章我了解到一个broker可能是整个集群的控制中心,也可能是某几个分区的leader,如果直接kill进程,需要集群重新选举后才恢复正常,感觉比较粗暴(会不会有选举失败的风险)。如果我有一台broker想短暂下线重启,怎么做比较好。

    作者回复: 可以先确定这个broker的角色,如果身兼数职,可以考虑先给它卸下一些重担?

    2019-08-06
    6
  • 胡小禾
    同问:集群中的某一台broker如何优雅停机? 先重启,再kill ?

    作者回复: 实际场景中直接关闭broker就行

    2020-05-23
    4
  • 归零
    老师,在修改主题的时候,命令--bootstrap-server broker_host:port 指定的是一个broker,如果一个集群有多个broker,需要依次执行吗?

    作者回复: 不需要。指定2~3个就可以了

    2021-02-21
    1
  • 黄振游
    增加了3个分区后,发现集群里只有一个broker增加了,其他broker还是只有一个,是什么原因呢

    作者回复: 说明增加的3个分区的leader副本都在那个broker上

    2021-02-02
    1
  • Geek_4254d8
    请问一下,在谈到消费者组冲彭亨全流程的时候不是提到,只有empty状态的组才会删除过期位移数据,那__consumer_offsets 占用太多的磁盘有没可能是消费者组一直很稳定,没有出现过重平衡导致长时间没进入empty状态呢

    作者回复: 即使消费者组是active状态,Kafka依然可以清理__consumer_offsets的过期数据,而不影响消费者组的位移保存。如果__consumer_offsets占用太多资源,通常都是已知的bug造成的。比如cleaner线程挂掉了

    2020-09-26
    2
    1
收起评论
显示
设置
留言
36
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部