kafka topic手动删除及其他相关

来源:互联网 发布:威海淘宝培训学校在哪 编辑:程序博客网 时间:2024/06/05 03:14
1.手动删除kafka topic


运行./kafka-topic --zookeeper zk1:2181,zk2:2181 --topic topic_name --delete
如果topic没能成功被删除(比如broker挂掉等)
可以用以下方式手动清理
(当然,也可以重启zk和broker;这样当broker正确注册上zk试,被mark delete的topic会被自动清理掉)


===============停止kafka,保持zookeeper仍旧运行======================================


a.用zookeeper客户端zkClient连接zookeeper,如:


./zkCli.sh -server 10.67.2.21:2181,10.67.2.20:2181


连接上后,可以用命令查看zk的目录结构


ls /brokers/topics


然后可以看到该目录下有pjtest目录


删除方式:
delete /brokers/topics/pjtest/partitions/0/state
...
delete /brokers/topics/pjtest/partitions/9/state
delete /brokers/topics/pjtest/partitions/0
...
delete /brokers/topics/pjtest/partitions/9
delete /brokers/topics/pjtest/partitions
delete /brokers/topics/pjtest


===========停止kafka和zookeeper========================


a.查看server.properties中配置的log.dirs路径
b.进入到此路径中(如果kafka是一个集群,需要在每台机器上执行)
假定要删除的topic名称叫做:pjtest


则rm -rf pjtest-*


vi replication-offset-checkpoint
原文为:
0
15
pjtest 4 0
pjtest 8 0
managejob 5 0
pjtest 6 0
pjtest 0 0
pjtest 5 0
pjtest 3 0
pjtest 7 0
pjtest 9 0
pjtest 2 0
managejob 9 0
managejob 1 0
managejob 3 0
pjtest 1 0
managejob 7 0


修改为:
0
5
managejob 5 0
managejob 9 0
managejob 1 0
managejob 3 0
managejob 7 0




vi recovery-point-offset-checkpoint
同理修改


===========启动kafka和zookeeper========================


2.kafka日志清理


kafka将会保留所有发布的消息,不论他们是否被消费过
如果需要清理,则需要进行配置;
server.properties配置:


log.cleanup.policy=delete
日志清理策略


log.retention.hours=240
数据存储的最大时间超过这个时间会根据log.cleanup.policy设置的策略处理数据,也就是消费端能够多久去消费数据
log.retention.bytes和log.retention.minutes任意一个达到要求,都会执行删除


log.retention.bytes=-1
topic每个分区的最大文件大小
一个topic的大小限制=分区数*log.retention.bytes
-1表示没有大小限制
log.retention.bytes和log.retention.minutes任意一个达到要求,都会执行删除


log.retention.check.interval.ms=5minutes
文件大小检查的周期时间


3.kafka的分布式


一个日志的多个partition被分散在kafka集群的多个server上,并且每一个server处理来自于某个partition的数据请求。每个partition可以配置副本个数,以便容错。
(注:在创建topic时,可以指定--replication-factor参数)


每个partition都有个一个server作为leader,并且有0或者多个server作为followers。leader处理对于这个partition的所有读写请求,而followers则被动的复制一切。如果leader挂掉了,一个followers则会自动的成为新的leader。每个server都会在某些partition上作为leader,而在另一些partition上作为follower,所以整个集群是非常平衡的。
(注:如果topic的repliation配置为1,则每个partition就只有唯一的一个leader,没有follower;所以要保证容错性,至少replication应该配置为2)




4.kafka producer最好使用轮询的方式向topic写数据,保证topic每个partition的负载是均衡的
0 0
原创粉丝点击