kafka是什么,怎么用?

288 阅读3分钟

一、kafka集群搭建

注意的地方:

log.Dirs 这个配置,是存储真实数据的,不是log日志。

delete.topic.enable 这个配置大家注意,如果我们不配置,那么删除Topic的时候,不会真正的删除掉,会做一个标记,那么我们需要手动的去删除所有配置。如果配置了的话,就真正的删除了。

二.kafka简介

Apache Kafka是一个快速、可扩展的、高吞吐、可容错的分布式发布订阅消息系统

Kafka的优势在于:

可靠性:Kafka是一个具有分区机制、副本机制和容错机制的分布式消息系统

可扩展性:Kafka消息系统支持集群规模的热扩展

高性能:Kafka在数据发布和订阅过程中都能保证数据的高吞吐量。即便在TB级数据存储的情况下,仍然能保证稳定的性能。

三、kafka组件

1.生产者:Producer 是消息生成的源头,负责生产消息并发送到kafka服务器上

2.消费者:Consumer ,负责消费kafka服务器上的消息

3.主题:Topic ,由用户定义配置,用于建立生产者和消费者之间的订阅关系

生产者发送指定的消息到指定的Topic,消费者从这个Topic消费信息

4.消息分区:Partition,一个Topic 下面有多个分区,也是用户指定的

分区存在主从结构,zookeeper作用在该上有leader和follower

leader负责读写,follower负责同步数据

5.Broker :kafka的服务器ID,一台机器叫一个Broker

6.消费者组:Group ,用于归属同一消费者,在kafka中多个消费者可以共同消费同一个topic下的消息,每个消费者消费其中一部分消息,这些消费者据组成一个分组,拥有同一个分组名称

消费者可以消费一个或者多个分区的数据,相反,一个分区数据同一个分区只能被一个消费者消费

7.Offset

偏移量拉去数据的时候需要知道消息在文件中的偏移量,然后通过偏移量拉去

四、使用场景

1、日志收集

index是字节偏移量存储的是元数据,log存储的是真实的数据

2.消息系统

3.运营指标

4.流式处理

sparkstreaming,flink优于spark

五、kafka的常用命令

新建一个topic

./bin/kafka-topics.sh --create --zookeeper hadoop04:2181,hadoop05:2181,hadoop06:2181 --partition 3 --replication-factor 3 --topic test-0

test-0是topic的名字

replication-factor 3 副本数

topic存储的是元数据,通过它找到真实的数据

改变分区

./bin/kafka-topics.sh --alter --zookeeper 192.168.14.131:2181,192.168.14.131:2182,192.168.14.131:2183 --partition 5 --topic test03

分区信息查询

./bin/kafka-topics.sh --describe --zookeeper hadoop04:2181,hadoop05:2181,hadoop06:2181 --topic test-0

结果为:leader主分区(broker Id) replicationfactor副本数 Isr是否存活(存储的顺序)

Topic:test-0 PartitionCount:3 ReplicationFactor:3 Configs:

Topic: test-0 Partition: 0 Leader: 0 Replicas: 0,2,1 Isr: 0,2,1

Topic: test-0 Partition: 1 Leader: 1 Replicas: 1,0,2 Isr: 1,0,2

Topic: test-0 Partition: 2 Leader: 2 Replicas: 2,1,0 Isr: 2,1,0

查询语句:

bin/kafka-topics.sh --list --zookeeper hadoop04:2181,hadoop05:2181,hadoop06:2181

删除语句

bin/kafka-topics.sh --delete --zookeeper hadoop04:2181,hadoop05:2181,hadoop06:2181 --topic test-0

结果是test-0 - marked for deletion

表示不能真正的删除只是做了个标记要删除取zookeeper去真正删除(这个配置如果设置为true可以真正删除,设置false不能删除)

#删除topic需要server.properties中设置delete.topic.enable=true否则只是标记删除

delete.topic.enable=false

rmr /brokers/topics/test-0 ,删除client中的brokers中topic对应的

rmr /config/topics/test-0 ,删配置

rmr /admin/delete_topics,删除admin中的标记为删除的topics

分区设置后只可以增加不可以减少

六API操作

启动生产者

./bin/kafka-console-producer.sh --broker-list 192.168.14.131:9092,192.168.14.132:9092,192.168.14.133:9092 --topic test03

启动消费者

./bin/kafka-console-consumer.sh --zookeeper 192.168.247.131:2181,192.168.247.132:2181,192.168.247.133:2181 --topic test03 --from-beginning

————————————————

版权声明:本文为CSDN博主「乌镇风云」的原创文章

原文链接:blog.csdn.net/weixin_43