Kafka--常用命令

在这里插入图片描述

主题创建/查看/修改/删除

自动创建

  • 可以通过auto.create.topics.enable 属性来自动创建主题。默认情况下,该属性值为true。
  • 因此,生产者应用程序向Kafka 集群中一个不存在的主题写数据时,会自动创建一个默认主题,主题的分区数和副本数也是默认的。
  • 默认分区的数值由$KAFKA_HOME/config/server.properties文件中的属性num.partitions = 2控制,
  • 默认副本系数值由$KAFKA_HOME/config/server.properties文件中的属性default.replication.factor =1控制

手动创建

  • 使用/export/servers/kafka/bin/kafka-topics.sh
    在这里插入图片描述

1.创建一个名为order的主题,副本数3,分区数6

kafka-topics.sh --zookeeper node01:2181 --create --topic order --replication-factor 3 --partitions 6

2.查看目前有的主题列表

kafka-topics.sh  --zookeeper node01:2181 --list
  • 下面感兴趣可以查看下
进入Kafka 系统消息数据存储目录/export/data/kafka/kafka-logs 中查看
cd /export/data/kafka/kafka-logs
ll

也可以通过zkCli.sh 脚本连接到Zookeepr 去访问主题分区信息和元数据信息
/export/servers/zookeeper/bin/zkCli.sh 
ls /brokers/topics/order/partitions
get /brokers/topics/order
quit

3.查看指定主题详情

kafka-topics.sh --zookeeper node01:2181 --describe  --topic order

在这里插入图片描述

4.修改主题–这里仅仅是修改config参数,后面单独讲分区和副本修改

创建一个新的主题, 1 个分区, 1 个副本
kafka-topics.sh  --zookeeper node01:2181 --create --topic user --replication-factor 1 --partitions 1  --config max.message.bytes=102400
查看覆盖的配置参数
kafka-topics.sh --zookeeper node01:2181 --describe --topic user --topics-with-overrides  
修改大小
kafka-topics.sh  --zookeeper node01:2181  --alter --topic user --config max.message.bytes=204800 
再次查看
kafka-topics.sh --zookeeper node01:2181 --describe --topic user --topics-with-overrides  

5.删除主题

创建主题
kafka-topics.sh  --zookeeper node01:2181 --create --topic test_delete --replication-factor 1 --partitions 1  
删除主题
kafka-topics.sh  --zookeeper node01:2181  --delete --topic test_delete 
查看主题
kafka-topics.sh  --zookeeper node01:2181  --list
注意:如果要删除主题,必须在server.properties中配置了如下配置

delete.topic.enable=true

6.如果要换行写

kafka-topics.sh  --zookeeper node01:2181  \
--list
  • 在比如
kafka-topics.sh  --zookeeper node01:2181 \
--create \
--topic test_delete \
--replication-factor 1 \
--partitions 1  

主题的分区和副本管理

主题分区

  • 主题分区的作用是用来提高并发读写的
  • 那么主题分区的修改只能增加分区数,不能减少分区数,否则报错
  • 因为主题分区中有分段文件,文件中的消息以offset偏移量作为唯一标识, 如果减小分区意味着要合并文件,那么offset会冲突
    在这里插入图片描述

1.演示增加分区

查看
kafka-topics.sh  --zookeeper node01:2181 --describe --topic user
修改分区数(只能增加)
kafka-topics.sh  --zookeeper node01:2181 --alter --topic user --partitions 3 
查看
kafka-topics.sh  --zookeeper node01:2181 --describe --topic user

在这里插入图片描述

副本管理–了解即可

  • 一般在创建主题的时候,就指定好分区数和副本数, 分区数只能增加,不能减少
  • 副本数虽然可以更改,但是比较麻烦,涉及到Leader和Follower的均衡,所以一般也都很少改
  • 这就要求在设计主题的时候考虑好分区数(要预估数据量和并发量)和副本数(一般2~3个即可,再多的话会影响性能)
创建主题
kafka-topics.sh --zookeeper node01:2181 --create --topic user2 --replication-factor 1 --partitions  6  --config max.message.bytes=102400
查看
kafka-topics.sh -describe -zookeeper node01:2181 --topic user2
  • 通过下面的json文件修改
    • vim user2_replicas.json
{
    
    
    "version": 1,
    "partitions": [{
    
    
        "topic": "user2",
        "partition": 0,
        "replicas": [2, 0, 1]
    }, {
    
    
        "topic": "user2",
        "partition": 1,
        "replicas": [0, 1, 2]
    }, {
    
    
        "topic": "user2",
        "partition": 2,
        "replicas": [1, 2, 0]
    }, {
    
    
        "topic": "user2",
        "partition": 3,
        "replicas": [2, 1, 0]
    }, {
    
    
        "topic": "user2",
        "partition": 4,
        "replicas": [0, 2, 1]
    }, {
    
    
        "topic": "user2",
        "partition": 5,
        "replicas": [1, 0, 2]
    }]
}
加载脚本修改副本数
kafka-reassign-partitions.sh --zookeeper node01:2181 --reassignment-json-file user2_replicas.json --execute
查看执行结果
kafka-reassign-partitions.sh --zookeeper node01:2181 --reassignment-json-file user2_replicas.json --verify
查看分区结果
kafka-topics.sh -describe -zookeeper node01:2181 --topic user2

控制台生产者使用–测试的时候使用

  • /export/servers/kafka/bin/kafka-console-producer.sh 脚本可用来作为控制台生产者客户端
  • 1.使用如下命令向指定主题发送消息
kafka-console-producer.sh --broker-list node01:9092 --topic test_topic
  • 注意:test_topic主题会被自动创建最好还是自己手动创建并指定主题的分区和副本数据

控制台消费者使用–测试的时候使用

  • Kafka 系统中, 消费者的实现方式分为新/旧API 。
  • • 新的:在Kafka 0.10.0.x 之后的版本中,Kafka 系统默认将消费实例产生的元数据信息存储到一个名为“ __consumer_offsets”的内部主题中。
    • 使用–bootstrap-server
  • • 旧的:在Kafka 0.10.0.x 之前的版本中,Kafka 系统默认的消费方式是将消费实例产生的元数据信息存储到Zookeeper 集群。
    • 使用–zookeeper
  • 1.使用控制台消费者测试接收消息
  • 推荐使用的
kafka-console-consumer.sh --bootstrap-server node01:9092  --topic test_topic --from-beginning 
  • 也可使用下面的-但是过期了
kafka-console-consumer.sh --zookeeper node01:2181  --topic test_topic --from-beginning 

猜你喜欢

转载自blog.csdn.net/qq_46893497/article/details/114178735