一、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博主「乌镇风云」的原创文章