1. 概念
1. Kafka是一个分布式的基于发布/订阅的消息队列,应用于大数据实时处理。
1.1 消息队列就是为了让消费者跟生产者解耦,实现高效,但是安全性肯定降低,需要额外处理。
1.2 大数据一般处理流程:日志收集者(flume) ---> Kafka ---> 消息消费者(spark、flink)。
1.3 消息队列分两种:
1.3.1 点对点(一对一)
1.3.2 发布/订阅(一对多)
2. 架构
1. 每一个Topic分为多个partition
2. 每一个partition都有多个副本在不同机器
3. 消费者组内两个消费者只能消费同一个topic的不同partition分区的消息,组内消费者形成一个订阅者
3. 安装部署
1. 依赖于zookeeper,首先安装zookeeper
2. 解压Kafka安装包
3. 配置环境变量
4. 配置Kafka属性
4.1 server.property文件
broker.id=0
log.dirs=/kafka/logs
num.partitions=1
log.retention.hours=168
log.retention.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=master:2181,slave1:2181,slave2:2181
5. 启动Kafka(预先启动zookeeper)
kafka-sever-start.sh config/server.property &
4. 命令行操作
1. 查看所有topic
kafka-topics.sh --list --zookeeper master:2181,slave1:2181
2. 新建topic 指定topic名 指定副本数 指定分区数
kafka-topics.sh --create --zookeeper master:2181,slave1:2181 --topic first --replication-factor 2 --partitions 2
2.*** 修改分区数2到3
kafka-topics.sh --alter --zookeeper master:2181,slave1:2181 --topic first --partitions 3
3. 查看/删除指定topic详细
kafka-topics.sh --describe/delete --zookeeper master:2181,slave1:2181 --topic first
4. 控制台开启一个生产者
kafka-console-producer.sh --broker-list master:9092,slave1:9092 --topic first
5. 控制台开启一个消费者 --from-beginning 从头开始消费
kafka-console-consumer.sh --bootstrap-server master:9092,slave1:9092 --topic first
5.