精华内容
下载资源
问答
  • kafka 主题管理

    2019-09-19 14:41:04
    修改主题3.1 修改主题分区3.2修改主题级别参数3.3变更副本数3.4修改主题限速3.5主题分区迁移4.删除主题4.1主题删除失败5.常见问题5.1__consumer_offsets 占用太多的磁盘 kafka 主题(topic)的管理(增删改查),...

    kafka 主题(topic)的管理(增删改查),使用最多的便是kafka自带的脚本。

    1.创建主题

    kafka提供的 kafka-topics 脚本,用来帮助用户创建主题(topic)。

    bin/kafka-topics.sh --bootstrap-server broker_host:port --create --topic my_topic_name  --partitions 1 --replication-factor 1
    

    create 表明我们要创建主题,而 partitions 和 replication factor 分别设置了主题的分区数以及每个分区下的副本数。

    为什么用的 --bootstrap-server 参数,而不是 --zookeeper?

    –zookeeper 参数是之前版本的用法,从kafka 2.2 版本开始,社区推荐使用 --bootstrap-server 参数替换 --zoookeeper ,并且显式地将后者标记为 “已过期”,因此,如果你已经在使用 2.2 版本了,那么创建主题请指定 --bootstrap-server 参数。

    推荐使用 --bootstrap-server 而非 --zookeeper 的原因主要有两个。

    1. 使用 --zookeeper 会绕过 Kafka 的安全体系。这就是说,即使你为 Kafka 集群设置了安全认证,限制了主题的创建,如果你使用 --zookeeper 的命令,依然能成功创建任意主题,不受认证体系的约束。这显然是 Kafka 集群的运维人员不希望看到的。
    2. 使用 --bootstrap-server 与集群进行交互,越来越成为使用 Kafka 的标准姿势。换句话说,以后会有越来越少的命令和 API 需要与 ZooKeeper 进行连接。这样,我们只需要一套连接信息,就能与 Kafka 进行全方位的交互,不用像以前一样,必须同时维护 ZooKeeper 和 Broker 的连接信息。

    2.查询主题

    创建好主题之后,Kafka 允许我们使用相同的脚本查询主题。你可以使用下面的命令,查询所有主题的列表。

    bin/kafka-topics.sh --bootstrap-server broker_host:port --list
    

    如果要查询单个主题的详细数据,你可以使用下面的命令。

    bin/kafka-topics.sh --bootstrap-server broker_host:port --describe --topic <topic_name>
    

    如果 describe 命令不指定具体的主题名称,那么 Kafka 默认会返回所有 “可见” 主题的详细数据给你。

    这里的 “可见”,是指发起这个命令的用户能够看到的 Kafka 主题。这和前面说到主题创建时,使用 --zookeeper 和 --bootstrap-server 的区别是一样的。如果指定了 --bootstrap-server,那么这条命令就会受到安全认证体系的约束,即对命令发起者进行权限验证,然后返回它能看到的主题。否则,如果指定 --zookeeper 参数,那么默认会返回集群中所有的主题详细数据。基于这些原因,建议最好统一使用 --bootstrap-server 连接参数。

    3.修改主题

    3.1 修改主题分区

    其实就是增加分区,目前 Kafka 不允许减少某个主题的分区数。你可以使用 kafka-topics 脚本,结合 --alter 参数来增加某个主题的分区数,命令如下:

    bin/kafka-topics.sh --bootstrap-server broker_host:port --alter --topic <topic_name> --partitions < 新分区数 >
    

    指定的分区数一定要比原有分区数大,否则 Kafka 会抛出 InvalidPartitionsException 异常。

    3.2修改主题级别参数

    在主题创建之后,我们可以使用 kafka-configs 脚本修改对应的参数。

    假设我们要设置主题级别参数 max.message.bytes,那么命令如下:

    bin/kafka-configs.sh --zookeeper zookeeper_host:port --entity-type topics --entity-name <topic_name> --alter --add-config max.message.bytes=10485760
    

    3.3变更副本数

    使用自带的 kafka-reassign-partitions 脚本,帮助增加主题的副本数。

    假设kafka的内部主题 __consumer_offsets 只有 1 个副本,现在想要增加至 3 个副本。下面是操作:

    1、创建一个 json 文件,显式提供 50 个分区对应的副本数。注意,replicas 中的 3 台 Broker 排列顺序不同,目的是将 Leader 副本均匀地分散在 Broker 上。该文件具体格式如下:

    {"version":1, "partitions":[
     {"topic":"__consumer_offsets","partition":0,"replicas":[0,1,2]}, 
      {"topic":"__consumer_offsets","partition":1,"replicas":[0,2,1]},
      {"topic":"__consumer_offsets","partition":2,"replicas":[1,0,2]},
      {"topic":"__consumer_offsets","partition":3,"replicas":[1,2,0]},
      ...
      {"topic":"__consumer_offsets","partition":49,"replicas":[0,1,2]}
    ]}
    

    2、执行 kafka-reassign-patitions 脚本,命令如下:

    bin/kafka-reassign-partitions.sh --zookeeper zookeeper_host:port --reassignment-json-file reassign.json --execute
    

    除了修改内部主题,我们可能还想查看这些内部主题的消息内容。特别是对于 __consumer_offsets 而言,由于它保存了消费者组的位移数据,有时候直接查看该主题消息是很方便的事情。下面的命令可以帮助我们直接查看消费者组提交的位移数据。

    bin/kafka-console-consumer.sh --bootstrap-server kafka_host:port --topic __consumer_offsets --formatter "kafka.coordinator.group.GroupMetadataManager\$OffsetsMessageFormatter" --from-beginning
    

    除了查看位移提交数据,我们还可以直接读取该主题消息,查看消费者组的状态信息。

    bin/kafka-console-consumer.sh --bootstrap-server kafka_host:port --topic __consumer_offsets --formatter "kafka.coordinator.group.GroupMetadataManager\$GroupMetadataMessageFormatter" --from-beginning
    

    对于内部主题 __transaction_state 而言,方法是相同的。你只需要指定 kafka.coordinator.transaction.TransactionLog$TransactionLogMessageFormatter 即可。

    3.4修改主题限速

    这里主要是指设置 Leader 副本和 Follower 副本使用的带宽。有时候,我们想要让某个主题的副本在执行副本同步机制时,不要消耗过多的带宽。Kafka 提供了这样的功能。我来举个例子。假设有个主题,名为 test,想让该主题各个分区的 Leader 副本和 Follower 副本在处理副本同步时,不得占用超过 100MBps 的带宽。注意是大写 B,即每秒不超过 100MB。那么,我们应该怎么设置呢?

    要达到这个目的,我们必须先设置 Broker 端参数 leader.replication.throttled.rate 和 follower.replication.throttled.rate,命令如下:

    bin/kafka-configs.sh --zookeeper zookeeper_host:port --alter --add-config 'leader.replication.throttled.rate=104857600,follower.replication.throttled.rate=104857600' --entity-type brokers --entity-name 0
    

    这条命令结尾处的 --entity-name 就是 Broker ID。倘若该主题的副本分别在 0、1、2、3 多个 Broker 上,那么还要依次为 Broker 1、2、3 执行这条命令。

    设置好这个参数之后,还需要为该主题设置要限速的副本。在这个例子中,想要为所有副本都设置限速,因此统一使用通配符 * 来表示,命令如下:

    bin/kafka-configs.sh --zookeeper zookeeper_host:port --alter --add-config 'leader.replication.throttled.replicas=*,follower.replication.throttled.replicas=*' --entity-type topics --entity-name test
    

    3.5主题分区迁移

    同样是使用 kafka-reassign-partitions 脚本,对主题各个分区的副本进行 “手术” 般的调整,比如把某些分区批量迁移到其他 Broker 上。

    4.删除主题

    bin/kafka-topics.sh --bootstrap-server broker_host:port --delete  --topic <topic_name>
    

    删除主题的命令并不复杂,关键是删除操作是异步的,执行完这条命令不代表主题立即就被删除了。它仅仅是被标记成 “已删除” 状态而已。Kafka 会在后台默默地开启主题删除操作。因此,通常情况下,需要耐心地等待一段时间。

    4.1主题删除失败

    当运行完上面的删除命令后,发现已删除主题的分区数据依然 “躺在” 硬盘上,没有被清除。这时该怎么办呢?

    实际上,造成主题删除失败的原因有很多,最常见的原因有两个:

    • 副本所在的 Broker 宕机了
    • 待删除主题的部分分区依然在执行迁移过程。

    如果是因为前者,通常重启对应的 Broker 之后,删除操作就能自动恢复;如果是因为后者,那就麻烦了,很可能两个操作会相互干扰。

    不管什么原因,一旦你碰到主题无法删除的问题,可以采用这样的方法:

    1. 手动删除 ZooKeeper 节点 /admin/delete_topics 下以待删除主题为名的 znode。
    2. 手动删除该主题在磁盘上的分区目录。
    3. 在 ZooKeeper 中执行 rmr /controller,触发 Controller 重选举,刷新 Controller 缓存。

    在执行最后一步时,要谨慎,因为它可能造成大面积的分区 Leader 重选举。事实上,仅仅执行前两步也是可以的,只是 Controller 缓存中没有清空待删除主题罢了,也不影响使用。

    5.常见问题

    5.1__consumer_offsets 占用太多的磁盘

    一旦你发现这个主题消耗了过多的磁盘空间,那么,一定要显式地用 jstack 命令查看一下 kafka-log-cleaner-thread 前缀的线程状态。通常情况下,这都是因为该线程挂掉了,无法及时清理此内部主题。倘若真是这个原因导致的,那就只能重启相应的 Broker 了。

    另外,注意保留出错日志,因为这通常都是 Bug 导致的。

    展开全文
  • kafka主题删除,查看主题详情,修改分区 kafka主题删除 #step 1 执行kafka删除命令 sh kafka-topics.sh — zookeeper zookeeper_host:2181 -- delete -- topic <topic_name> #step 2 删除zookeeper内该topic ...

    kafka主题删除,查看主题详情,修改分区

    kafka主题删除

    #step 1 执行kafka删除命令
    sh kafka-topics.sh — zookeeper zookeeper_host:2181 -- delete -- topic <topic_name>
    #step 2 删除zookeeper内该topic 相关信息
    rmr /brokers/topics/<topic_name>
    rmr /admin/delete_topics/<topic_name>
    rmr /config/topics/<topic_name>
    #step 3 重启kafka
    

    查看主题详情

    ./kafka-topics.sh --describe --zookeeper zookeeper_host:2181 --topic <topic_name>
    

    修改分区数

    方案1:动态修改

    ./kafka-topics.sh --alter --zookeeper zookeeper_host:2181 --topic <topic_name>--partitions 20
    

    注: 动态修改分区,必须是增加分区,不能减少分区

    方案2:重建topic

    #step 1 删除topic
    #step 2 修改配置文件 num.partitions
    #step 3 创建topic
    

    参考资料:
    https://www.jianshu.com/p/e727d5e57ab8

    本文连接:https://blog.csdn.net/Felix_CB/article/details/109571159

    展开全文
  • kafka主题和分区创建修改

    千次阅读 2018-07-17 09:07:27
    kafka主题和分区创建修改: 创建主题和修改主题,分区: D:\kafka_2.11-1.1.0\bin\windows&gt;kafka-topics.bat --zookeeper localhost:2181 --alter --topic test --partitions 2 //已有test主题 partition...

    kafka主题和分区创建修改:

    创建主题和修改主题,分区:

    D:\kafka_2.11-1.1.0\bin\windows>kafka-topics.bat --zookeeper localhost:2181 --alter --topic test  --partitions 2

    //已有test主题 partition改为2,名字也可以改

    展开全文
  • kafka主题

    千次阅读 2018-05-18 15:23:55
    kafka创建topic、kafka完全删除topic、kafak修改topic分区、kafka查看topic

    一、创建topic

    # zookeeper指定其中一个节点即可,集群之间会自动同步
    ./bin/kafka-topics.sh --create --zookeeper 192.168.238.132:2181 --replication-factor 2 --partitions 3 --topic test_topic
    

    二、查看topic

    #查看全部topic
    ./bin/kafka-topics.sh --list --zookeeper 192.168.238.132:2181
    
    # 查看某个topic的详细信息
    ./bin/kafka-topics.sh --describe --zookeeper 192.168.238.131:2181 --topic test_topic

    三、删除topic

    ./bin/kafka-topics.sh  --delete --zookeeper 192.168.238.131:2181  --topic test_topic

    如果kafaka启动时加载的配置文件中 server.properties 没有配置delete.topic.enable=true,那么此时的删除并不是真正的删除,而是把topic标记为:marked for deletion
    deleteTopic
    被标记为删除后的topic:
    deletedTopic

    此时你若想真正删除它,可以如下操作:

    ./bin/zkCli.sh -server 192.168.238.132:2181 # 客户端连接zk服务器
    ls /brokers/topics # zk中查看topic所在的目录
    rmr /brokers/topics/test_topicaaa # 删除要彻底删除的topic
    # 删除kafka存储目录(server.properties文件log.dirs配置,默认为"/tmp/kafka-logs")相关topic目录

    也可以去掉topic的:marked for deletion标记:

    ./bin/zkCli.sh -server 192.168.238.132:2181 # 客户端连接zk服务器
    ls /admin/delete_topics # 查看被标记为marked for deletion的topic
    rmr /admin/delete_topics/test_topicaaa

    ./conf/server.properties 中添加:delete.topic.enable=true

    四、修改topic

    topic分区只能添加,不能减少

    # 添加到8个分区
    ./bin/kafka-topics.sh --alter --zookeeper 192.168.238.145:2181 --partitions 8 --topic test_topic
    展开全文
  • 修改kafka中某一主题的数据存留时间

    千次阅读 2018-12-29 09:08:49
    我们都知道,kafka中默认消息的保留...但是有的时候我们需要对某一个主题的消息存留的时间进行变更,而不影响其他主题。 可以使用命令: kafka-configs.sh –zookeeper localhost:2181 –entity-type topics –enti...
  • 简要:开发中,常常因为需要我们要认为修改消费者实例对kafka某个主题消费的偏移量。具体如何修改?为什么可行?其实很容易,有时候只要我们换一种方式思考,如果我自己实现kafka消费者,我该如何让我们的消费者代码...
  • kafka主题操作

    2018-12-02 12:53:44
    所有操作都在kafka安装目录下进行。 查看所有主题: 代码: ./bin/kafka-topics.sh --list --zookeeper 127.0.0.1:2181 结果: 查看单个主题: 代码: ./bin/kafka-topics.sh --describe --zookeeper ...
  • 动态管理kafka主题

    2019-09-25 15:08:10
    动态修改卡夫卡消息主题 卡夫卡为我们提供一系列的方法来对主,及分区,副本进行管理; 引入如下依赖 <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients&...
  • kafka主题与分区

    2020-04-07 23:10:57
    kafka主题与分区 ​ 主题和分区时kafka的两个核心概念,主题作为消息的归类,可以在细分为一个或者多个分区,分区可以看作是对消息的二次归类。分区的划分不仅可以为kafka提供了可伸缩性,水平扩展能力,还可以通过...
  • KAFKA主题操作

    2019-05-10 17:31:25
    1.创建主题(当消息生产者向一个主题发布消息时,如果主题不存在,会自动创建一个) ##创建3个分区 两个副本 该主题名为test ##kafka-topics.sh 为kafka/bin 下的可执行文件 ##zookeeper参数是必传参数,用于配置...
  • 前言主题和分区是Kafka 的两个核心概念,前面系列中讲述的生产者和消费者的设计理念所针对的都是主题和分区层面的操作。主题作为消息的归类,可以再细分为一个或多个分区,分区也可以看作对消息的二次归类。分区的...
  • kafka主题管理

    2018-10-24 14:50:00
    若代理设置了 auto.create.topics.enable=true,这样还未创建topic就往kafka发送消息时, 会自动创建一个 ${num....1.创建一个名称为“kafka-action”的主题,该主题有两个副本,3个分区: [root@docp-n b...
  • Kafka主题和分区-笔记3

    2020-03-04 20:10:26
    文章目录Kafka主题和分区-笔记3主题的增删改查新增主题查看主题修改主题主题端配置参数与broker端关系删除主题KafkaAdminClient分区优先副本(preferred replica)的选举分区重分配复制限流修改副本因子分区数的选择...
  • 修改kafka的分区和副本设置

    千次阅读 2018-07-05 15:38:49
    #./kafka-topics.sh --describe --zookeeper snn:2181 --topictest-qt-001 2.编写副本再赋值脚本 创建文本文件”partitions-to-move.json”, # vim partitions-to-move.json.json 输入文本: { “versi...
  • kafka docker查看及修改主题分区实践

    千次阅读 2019-06-10 18:42:01
    环境描述: 操作系统:Linux centos 7 kafka环境:docker 1.进入docker:docker exec -it kakfa /bin/bash 2.进入docker中kafka的文件...3.查看当前主题的信息:bin/kafka-topics.sh --zookeeper IP:2181 --de...
  • I am new to Kafka and working with new KafkaProducer and KafkaConsumer, version : 0.9.0.1Is there any way in java to alter/update the number of partitions for a specific topic after it has been create...
  • 04-Kafka主题和分区

    2019-07-22 20:00:12
    文章目录Kafka主题和分区一、主题管理1.1 创建主题1.2 分区副本分配1.2.1 分区和角色1.2.2 分配逻辑1.3 查看主题1.4 修改主题1.5 配置管理1.6 主题参数1.7 删除主题二、KafkaAdminClient2.1 基本使用2.2 主题合法性...
  • 1.linux指令 查看主题的详细信息指令 ./bin/kafka-topics.sh --zookeeper localhost:...修改主题的分区消息指令 ./bin/kafka-topics.sh --alter --zookeeper localhost:2181 --topic 主题名称 --partitions 分...
  • Kafka主题与分区主题分区副本的分配分区副本机制Leader选举分区重新分配自动再均衡修改分区副本分区分配策略RangeAssignorRoundRobinAssignorStickyAssignor总结 主题 分区副本的分配 副本分配的三个目标: 均衡地...
  • Kafka 设置日志存储 时间 (配置方法) Kafka 设置日志存储 时间 (命令行方法,重启失效) kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --entity-name jianyou_znsh5_TCPPUSH --alter --add-...
  • 修改kafka topic的offset几种方法

    万次阅读 2016-12-15 10:44:11
    查询topic的offset的范围 用下面命令可以查询到topic:test broker:suna:...bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list suna:9092 -topic test --time -2 输出 test:0:1288 查询offset
  • Kafka主题topic和分区Partition介绍

    千次阅读 2020-05-28 14:57:32
    一.Kafka主题 1.管理 1)创建主题 bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic hello --partitions 2 --replication-factor 1 ​ localhost:2181:zookeeper所在的ip,zookeeper 必传参数...
  • Kafka主题(Topic)的管理

    千次阅读 2019-10-29 17:46:59
    主题的管理包括创建主题、 查看主题信息、修改主题和删除主题等操作。可以通过 Kafka 提供的 kafka-topics.sh 脚本来执行这些操作,这个脚本位于 $KAFKA_HOME/bin/目录下,其核 心代码仅 有一行,具体如下 : exec ...
  • 主题管理 创建主题 kafka-topics.sh --create --zookeeper bigdata1:2181 --replication-factor 2 --partitions 3 -- topic supernova 以上就是创建了一个supernova主题主题有两个副本 三个分区 删除主题 kafka-...
  • Kafka主题(topic)的删除

    2019-09-12 15:08:48
    step1: 如果需要被删除topic 此时正在被程序 produce和consume,则这些生产和消费...调用kafka delete命令则无法删除该topic。 同时,需要设置 auto.create.topics.enable = false,默认设置为true。如果设置为...
  • kafka

    万次阅读 2020-01-29 20:46:13
    Kafka是什么 Apache Kafka是一个开源消息系统,由Scala写成。是由Apache软件基金会开发的一个开源消息系统项目。 Kafka最初是由LinkedIn开发,并于2011年初开源。2012年10月从Apache Incubator毕业。该项目的目标是...
  • kafka删除主题数据和删除主题

    万次阅读 2018-01-08 10:34:26
    kafka使用confluent-3.1.2 删除的主题名:test 1、删除主题 在server.properties中增加设置,默认未开启 delete.topic.enable=true删除主题命令 /bin/kafka-topics --delete --topic test --zookeeper ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,119
精华内容 5,647
关键字:

修改kafka主题