Kafka的相关操作

大数据

2017-01-19

439

0

创建一个topic

#创建一个test的topic
bin/kafka-topics.sh --zookeeper 【zookeeper server:port】 --create --topic test --replication-factor 1 --partitions 1

partitions分区数

(1). partitions :分区数,控制topic将分片成多少个log。可以显示指定,如果不指定则会使用broker(server.properties)中的num.partitions配置的数量
(2). 虽然增加分区数可以提供kafka集群的吞吐量、但是过多的分区数或者或是单台服务器上的分区数过多,会增加不可用及延迟的风险。因为多的分区数,意味着需要打开更多的文件句柄、增加点到点的延时、增加客户端的内存消耗。
(3). 分区数也限制了consumer的并行度,即限制了并行consumer消息的线程数不能大于分区数
(4). 分区数也限制了producer发送消息是指定的分区。如创建topic时分区设置为1,producer发送消息时通过自定义的分区方法指定分区为2或以上的数都会出错的;这种情况可以通过alter –partitions 来增加分区数。


replication-factor副本

1 . replication factor 控制消息保存在几个broker(服务器)上,一般情况下等于broker的个数。
2. 如果没有在创建时显示指定或通过API向一个不存在的topic生产消息时会使用broker(server.properties)中的default.replication.factor配置的数量

查看topic属性

bin/kafka-topics.sh --zookeeper zk1:2181 --describe --topic topicname

第一行,列出了topic的名称,分区数(PartitionCount),副本数(ReplicationFactor)以及其他的配置(Config.s)
Leader:1 表示为做为读写的broker的编号
Replicas:表示该topic的每个分区在那些borker中保存
Isr:表示当前有效的broker, Isr是Replicas的子集


修改topic

增加分区数

bin/kafka-topics.sh --zookeeper zk_host:port --alter --topic my_topic_name--partitions 40

增加配置

bin/kafka-topics.sh --zookeeper zk_host:port --alter --topic my_topic_name --config flush.messages=1

删除配置

bin/kafka-topics.sh --zookeeper zk_host:port --alter --topic my_topic_name --delete-config flush.messages=1

使用kafka的监控来查看

java -cp KafkaOffsetMonitor-assembly-0.2.0.jar \
 com.quantifind.kafka.offsetapp.OffsetGetterWeb \
 --zk 【zookeeper server:port】 \
 --port 8089 \
 --refresh 10.seconds \
 --retain 1.days

使用customer来查看收到的数据

./kafka-console-consumer.sh -zookeeper 【zookeeper server:port】 --from-beginning --topic test

删除Kafka中的topic

1、删除kafka存储目录(server.properties文件log.dirs配置,默认为"/tmp/kafka-logs")相关topic目录

2、Kafka 删除topic的命令是:

./bin/kafka-topics  --delete --zookeeper 【zookeeper server:port】  --topic 【topic name】

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

     你可以通过命令来查看所有topic

./bin/kafka-topics --zookeeper 【zookeeper server:port】 --list 

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

     (1)登录zookeeper客户端:命令:

./bin/zookeeper-client

     (2)找到topic所在的目录:

ls /brokers/topics

     (3)找到要删除的topic,执行命令即可,此时topic被彻底删除。

rmr /brokers/topics/【topic name】

另外被标记为marked for deletion的topic你可以在zookeeper客户端中通过命令获得:

ls /admin/delete_topics/【topic name】

  如果你删除了此处的topic,那么marked for deletion 标记消失

转载请注明出处: http://www.julyme.com/20170119/66.html

发表评论

全部评论:0条

Julyme

感觉还行吧。

Julyme的IT技术分享



/sitemap