一.Kafka介绍
Kafak是一个分布式数据流平台,可以从如下几个层面来理解:
1.我们可以向Kafka发布数据以及从Kafka订阅数据,即我们可以将kafka看做一个消息队列。所起到的作用:缓冲(消峰限流),实现生产与消费的解耦。
2.Kafka可以存储数据,并提供容错机制,即数据丢失可以进行恢复
3.当数据到达Kafka之后,可以马上的被消费处理,即Kafka的延迟很低
综合,Kafka具备以上这三个明显的特点,根据Kafka的这些特点,Kafka的适用场景是:搭建实时流平台的中间件
在实际工作中,对数据的处理方式有两种:
①离线批处理
②实时流处理
二.Kafka核心概念及操作
知识点:
1.producer生产者,可以是一个测试线程,也可以是某种技术框架(比如flume)
2.producer向kafka生产数据,必须指定哪个主题去生产数据
3.主题topic。主题是由用户(程序员)自己来创建的
4.创建主题的命令:
sh kafka-topics.sh --create --zookeeper zk01:2181 --replication-factor 3 --partitions 3 --topic cnbook
5.产看kafka集群的所有主题
sh kafka-topics.sh --list --zookeeper zk01:2181
6.创建一个主题,需要指定:
①主题名
②主题分区数量
③分区的副本数量
7.主题的分区,本质上就是一个分区文件目录。
分区目录的命名规则:主题名-分区编号(分区编号从0开始)
思考:kafka主题引入分区机制,有什么用?
可以分布式的对一个主题数据进行存储和管理。
补充:主题的分区数量可以远大于kafka broker的服务器数量。kafka底层尽可能确保分区目录的负载均衡。比如:一个主题有10个分区。底层尽可能确保分区目录的负载均衡。比如:一个主题10个分区,3个broker,则分区目录的数量分配:3-3-4
8.启动一个生产者线程。
sh kafka-console-producer.sh --broker–list kafka01:9092,kafka01:9092,kafka01:9092(几台kafka就写几台) --topic cnbook
9.producer向kafka指定的主题生产数据,数据最终是存到了分区目录下的log文件中,此外kafka底层会确保每个分区目录的数据达到负载均衡的效果(轮询发送给每个分区目录)
10.Kafka支持数据的容错机制,即分区数据丢失后,可以恢复,通过副本沉余机制来实现的。即