主题创建/查看/修改/删除
自动创建
可以通过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
{
"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”的内部主题中。
• 旧的:在Kafka 0.10.0.x 之前的版本中,Kafka 系统默认的消费方式是将消费实例产生的元数据信息存储到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