一:简介
一种分布式的基于发布/订阅的消息系统
二:场景
常用组合:常用 flume (收集数据) --> kafka(把收集来的数据存储到kafka) --> spark Streaming(使用spark Streaming 从kafka中取数据)
运用场景:1.系统之间的解耦合 2.峰值压力缓冲 3.异步通信
三:特点
1.消息持久化 2.高吞吐量 3.分布式 4.多客户端支持 5. 实时性
基本组件:
1.broker :负责数据的独写请求,存储消息;
2.product :往kafka中生产数据 ;
3.Consumer : 从kafka中取数据;
4.Topic : 用来数据的分类 ,不同消费者去指定的Topic中读,不同的生产者往不同的topic中写 ;
5.Partition :一个 topic 分为多个partition, 在topic的基础上进一步分区,在partition中每个数据都有一个offset记录位置信息 producer 往partition中写数据,并给每一个数据中设置offset记录位置 (顺序是强有序的) 一个consumer 一次只能读一个partition中的数据
6.zookeeper负载均衡:将topic分成多个分区,每个broker存储一个或多个partition(用来协调broker)
四:kafka 环境搭建
1. 下载zookeeper
(1)解压
(2)在conf下 把zoo_sample.cfg 文件改名为 zoo.cfg
(3)vim zoo.cfg 修改以下配置
clientPort=2181
server.1=127.0.0.1:12888:1288
server.2=127.0.0.1:13888:1388
server.3=127.0.0.1:14888:1488
dataDir=../zkData
dataLogDir=../zkLog
(4)在zookeeper-3.4.14\zkData 下创建myid文件
内容为1
(5)修改每一个集群下的zoo.cfg文件 并且创建myid文件
2. 下载kafka
(1)解压
(2)修改 config/server.properties 文件 内容如下
三个集群分别为
broker.id=0 broker.id=1 broker.id=2
port=9092 port=9093 port=9094
log.dirs=/tmp/kafka-logs log.dirs=/tmp/kafka-logs-1 log.dirs=/tmp/kafka-logs-2
五:kafka的命令
启动kafka:
kafka-server-start.bat ../../config/server.properties
创建topic:
kafka-topics.bat --create --zookeeper 127.0.0.1:2181 --replication-factor 1 --partitions 1 --topic test
查看topic:
kafka-topics.bat --list --zookeeper localhost:2181
发送消息:
kafka-console-producer.bat --broker-list localhost:9092 --topic test
接收消息:
kafka-console-consumer.bat --zookeeper localhost:2181 --topic test --from-beginning