Kafka topic常见命令解析

本文着重介绍几个常用的topic命令行命令,包括listTopic,createTopic,deleteTopic和describeTopic等。由于alterTopic并不是很常用,本文中就不涉及了。另外本文的代码分析是基于kafka_2.10-0.8.2.1的(虽然截图是Kafka 0.8.1的^_^ )

 

一. list topic 显示所有topic

1. 从zookeeper的/brokers/topics节点下获取所有topic封装成topic集合

2. 遍历该集合,查看每个topic是否是待删除topic——即在/admin/delete_topics下是否存在同名节点。如果是,打印topic已经被标记为删除;否则直接打印topic名称

二、create topic 创建topic

1. 从命令行中获取要创建的topic名称

2. 解析命令行指定的topic配置(如果存在的话),配置都是x=a的格式

3. 若指定了replica-assignment参数表明用户想要自己分配分区副本与broker的映射——通常都不这么做,如果不提供该参数Kafka帮你做这件事情

4. 检查必要的参数是否已指定,包括:zookeeper, replication-factor,partition和topic

5. 获取/brokers/ids下所有broker并按照broker id进行升序排序

6. 在broker上分配各个分区的副本映射 (没有指定replica-assignment参数,这也是默认的情况)

7. 检查topic名字合法性、自定义配置的合法性,并且要保证每个分区都必须有相同的副本数

8. 若zookeeper上已有对应的路径存在,直接抛出异常表示该topic已经存在

9. 确保某个分区的多个副本不会被分配到同一个broker

10. 若提供了自定义的配置,更新zookeeper的/config/topics/[topic]节点的数据

11. 创建/brokers/topics/[topic]节点,并将分区副本分配映射数据写入该节点

三、delete topic 删除topic

1. 获取待删除的topic,如果没有指定--topic就是删除所有的topic

2. 对于每个要删除的topic,在zookeeper上的/admin/delete_topics下创建对应的子节点。kafka目前的删除topic逻辑只是在Zookeeper上标记而已,会有专门的线程负责监听该路径下的变更并负责更新zookeeper上其他节点上的数据,但底层的日志文件目前还是需要手动删除。

四、describe topic 显示topic详细信息

1. 上图可见,如果指定了--topic就是只显示给定topic的信息,否则显示所有topic的详细信息。

2. 如果指定了under-replicated-partitions,那么就显示那些副本数量不足的分区(ISR size < AR.size)

3. 如果指定了unavailable-partitions,那么就显示那些leader副本已不可用的分区

4. 从zookeeper上获取当前所有可用的broker

5. 遍历每个要describe的topic,

6. 获取这个topic的分区副本分配信息,若该信息不存在说明topic不存在

7. 否则将分配信息按照分区号进行排序

10. 如果没有指定步骤2中的参数也没有指定步骤3中的参数,那么显示分区数信息、副本系数信息以及配置信息

11. 默认情况下还会显示各个分区的信息

12. 从zookeeper中获取每个分区的ISR、Leader、AR信息并显示

时间: 2024-10-09 03:46:19

Kafka topic常见命令解析的相关文章

git 常见命令解析

转载自http://www.rainkong.net/post/git-image.html 之前用的都是svn ,git还是要了解的,万一哪天要用了呢

maven学习教程(二)—— 常见命令、配置解析、HelloWorld

[摘要] |-- 常见命令介绍 |-- maven项目骨架介绍 |-- maven项目配置文件介绍 |-- DEMO:HelloWolrd |-- 通过一个简单的项目 |-- 熟悉项目骨架 |-- 熟悉常见命令及常见命令的作用 |-- 熟悉配置文件的一些常见配置 |-- 常见命令操作 |-- (1)mvn clean--使用maven清空编译:运行清理操作,会默认吧target目录清理掉 |-- (2)mvn clean compile--使用maven编译项目:运行清理,再运行编译操作:代码编

Kafka学习之一深度解析

背景介绍 Kafka简介 Kafka是一种分布式的,基于发布/订阅的消息系统.主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能 高吞吐率.即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输 支持Kafka Server间的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输 同时支持离线数据处理和实时数据处理 为什么要用消息系统 解耦在项目启动之初来预测将来项目会碰到什么需求,是极其困难的.消息队

Apache Kafka系列(二) 命令行工具(CLI)

Apache Kafka系列(一) 起步 Apache Kafka系列(二) 命令行工具(CLI) Apache Kafka命令行工具(Command Line Interface,CLI),下文简称CLI. 1. 启动Kafka 启动Kafka需要两步: 1.1. 启动ZooKeeper [[email protected] kafka_2.12-0.11.0.0]# bin/zookeeper-server-start.sh config/zookeeper.properties 1.2.

Linux中的命令解析

命令解析: [[email protected]~]# []                  没有特殊意义 root:             当前登录用户(管理员用户) @                 没有特殊含义 localhost      主机名 ~                  代表当前所在(~家目录) #                  代表当前登录用户是管理员 $                  如果是$则表示普通用户 ----------- 关于文件 格式: 命令

kafka topic制定规则

kafka topic的制定,我们要考虑的问题有很多,比如生产环境中用几备份.partition数目多少合适.用几台机器支撑数据量,这些方面如何去考量?笔者根据实际的维护经验,写一些思考,希望大家指正. 1.replicas数目 可以从上图看到,备份越多,性能越低,因为kafka的写入只写入主分区,备份相当于消费者从主分区pull数据,这样势必会造成性能的损耗,故建议在生产环境中使用一主一备即可. 2. partition数量 (1)设置partition数量的时候我们需要注意:kafka的pa

手动删除Kafka Topic

一.删除Kafka topic 运行./bin/kafka-topics  --delete --zookeeper [zookeeper server]  --topic [topic name]:如果kafaka启动时加载的配置文件中server.properties没有配置delete.topic.enable=true,那么此时的删除并不是真正的删除,而是把topic标记为:marked for deletion 可以通过命令:./bin/kafka-topics --zookeeper

Linux Top 命令解析 比较详细--转

TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序:而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定. top - 12:38:33 up 50 days, 23:15,  7 users,  load average: 60.58, 61.14,

GCC 常见错误解析

1GCC 常见错误解析一.错误类型第一类∶C 语法错误错误信息∶文件source.c 中第n 行有语法错误(syntex errror).这种类型的错误,一般都是 C 语言的语法错误,应该仔细检查源代码文件中第n 行及该行之前的程序,有时也需要对该文件所包含的头文件进行检查.有些情况下,一个很简单的语法错误,gcc 会给出一大堆错误,此时要保持清醒的头脑,不要被其吓倒,必要的时候再参考一下C 语言的基本教材.第二类∶头文件错误错误信息∶找不到头文件head.h(Can not find incl