kafka使用——基本操作(3)

管理主题

创建主题

在Kafka系统中有两种方式来创建主题,自动创建和手动创建。

自动创建

可以通过auto.create.topics.enable属性来自动创建主题。默认情况下,该属性值为true。声场这应用程序向Kafka急群众一个不存在的主题写数据时,会自动创建一个默认分区和默认副本系数的主题。

  • 默认分区的数值由$KAFKA_HOME/config/server.properties文件中的属性num.partitions控制。
  • 默认副本系数的值由$KAFKA_HOME/config/server.properties文件中的属性default.replication.factor控制。

手动创建

可以通过kafka-topics.sh脚本手动创建主题。

创建主题

kafka-topics.sh --create --zookeeper zoo1:2181,zoo2:2181,zoo3:2181 --replication-factor 2 --partitions 3 --topic kafka-action
  • **zookeeper:**必传参数,用于配置Kafka集群与Zookeeper连接地址,多个配置之间用分割。
  • **partitions:**设置主题分区,必传参数,Kafka通过分区分配策略,将一个主题的消息分散到多个分区并分别保存到不同的代理上。
  • **replication-factor:**设置主题副本数,必传参数,副本会被分布在不同的节点上,副本数不能超过节点数,否则创建主题失败。

创建主题时,可以通过config参数来设置主题级别的配置覆盖默认配置,可以设置多组配置。#

# 设置该主题的max.message.bytes为404800字节
kafka-topics.sh --create --zookeeper zoo1:2181,zoo2:2181,zoo3:2181 --replication-factor 2 --partitions 3 --config max.message.bytes=404800 --topic kafka-test

查看主题

Kafka系统中的kafka-topics.sh脚本提供连个查看主题信息的命令。

  • **describe命令:**用来查看指定主题或全部主题的信息。
  • **list命令:**用来列出所有主题名。

查看所有主题

kafka-topics.sh --list --zookeeper zoo1:2181,zoo2:2181,zoo3:2181

查看特定主题信息

当执行describe命令时,指定topic参数则查看特定主题信息,若不指定topic参数则查看所有主题信息。

kafka-topics.sh --describe --zookeeper zoo1:2181,zoo2:2181,zoo3:2181

查看正在同步的主题

通过describeunder-replicated-partitions命令组合受用,可以查看处于under replicated状态的分区。处于该状态的主题可能正在进行同步操作,也可能同步发生异常,所有查询到的主题分区的ISR列表长度小于AR列表长度。

kafka-topics.sh --describe --zookeeper zoo1:2181,zoo2:2181,zoo3:2181 --under-replicated-partitions

查看没有Leader的分区

通过describeunavailable-partitions命令组合使用,可以查看没有Leader副本的主题。

kafka-topics.sh --describe --zookeeper zoo1:2181,zoo2:2181,zoo3:2181 --unavailable-partitions

查看主题覆盖配置

通过describetopics-with-overrides命令组合使用,可以查看主题覆盖了哪些配置。组合使用与只有describe命令的区别在于:topic-with-overrides命令只显示descibe命令执行的第一行信息。

kafka-topics.sh --describe --zookeeper zoo1:2181,zoo2:2181,zoo3:2181--topics-with-overrides

修改主题

当创建一个主题后,可以通过alter命令对主题进行修改,包括主题级别的配置、增加主题分区、修改副本分配方案、修改主题Offset。

修改主题级别配置

在创建主题时,可以通过config参数覆盖主题级别的默认配置,当主题创建后可以通过alter与config参数组合使用,修改或增加新的配置可以覆盖响应配置原来的值,或者通过alter与delete-config参数组合使用删除响应配置设置使其恢复默认值。

#修改配置
kafka-topics.sh --alter --zookeeper zoo1:2181,zoo2:2181,zoo3:2181 --topic config-test --config max.message.bytes=204800
#删除配置
kafka-topics.sh --alter --zookeeper zoo1:2181,zoo2:2181,zoo3:2181 --topic config-test --delete-config max.message.bytes

增加分区

Kafka不支持减少分区的操作,只能为一个主题增加分区。

kafka-topics.sh --alter --zookeeper zoo1:2181,zoo2:2181,zoo3:2181 --topic config-test --partitions 5

删除主题

Kafka系统中,删除主题有两种方式。

  • 手动删除各节点${log.dir}目录下该主题分区文件夹,同事登录Zookeeper客户端删除待删除主题对应的节点,主题元数据保存在/brokers/topics和/config/topics沐浴露下
  • 执行kafka-topics.sh脚本进行删除,若希望通过该脚本彻底删除主题,则需要保证在启动Kafka时所加载的server.properties文件中配置delete.topic.enable=true,该配置默认为false。否则执行该脚本并未真正删除主题,而是在Zookeeper的/admin/delete_topics目录下创建一个与待删除主题同名的节点,将该主题标记为删除状态。
kafka-topics.sh --delete --zookeeper zoo1:2181,zoo2:2181,zoo3:2181 --topic kafka-action

生产者基本操作

Kafka自带了一个终端延时生产者发布消息的脚本kafka-console-producer.sh

  • **producer.config:**用于加载一个生产者级别相关配置的配置文件。
  • **producer-property:**通过该参数可以直接在启动生产者命令行中设置生产者级别的配置,在命令行中设置的参数将会覆盖锁加载配置文件中的参数设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值