基本概念
(1) 什么是kafka:大吞吐量,内置分区,可以进行数据备份,同时具备数据容错性的消息系统。
① Kafka可以完成在线或者离线数据消费,所谓离线数据消费实际上就是kafka将消息数据保留在磁盘上。
② kafka会做数据备份,防止节点宕机从而导致数据丢失。
③ 和spark产品的整合性非常好,可以完成实时的大数据分析
④ kafka的节点可以无限扩容
(2) 什么是消息系统:将数据从一个应用程序传递到另一个应用程序,分布式系统利用消息系统,在多应用之间进行高效、稳定、安全的数据传递。
(3) 两种消息模式
① 点对点:若干个生产和消费者,处理队列当中的数据,一旦该数据被消费,则从队列当中被移除。(多线程:生产消费者模型)
② 发布-订阅:消息是被保留在主题当中,消费者消费一个或者若干个主题当中的消息
(4) 术语:
① Topics
② Partition
③ Offset
④ Brokers
⑤ Kafka Cluster
(5) 发布和订阅的流程
① 生产者向主题当中提交消息,代理将主题当中的数据在主题的分区当中依次保存;
② 消费者向代理请求获取消息,代理向消费者提供偏移量,消费者根据偏移量要求获取消息。
③ 消费者排队的前提,消费者数量大于分区数量
部署环境
环境变量配置
【1】Kafka
【2】Scala
==========伪集群搭建:server.properties * 3
broker.id=1 //配置代理id
port=9091 //端口号
host.name=192.168.92.102 //主机地址log.dirs=/hadoopserver/kafka_2.12-2.3.0/zkLogs/log01 //日志地址
zookeeper.connect= 192.168.92.102:2181,192.168.92.102:2182,192.168.92.102:2183 //zk连接地址
====
启动顺序:先启动ZK,然后才是kafka
kafka-server-start.sh ./server1.properties
关闭集群:注意修改脚本!
kafka shell操作
获取端口的主题列表: kafka-topics.sh --list --zookeeper 192.168.92.102:2183
创建主题:数据副本与主题分区【个数】 kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 3 --topic hello_kafka_10
生产者生产消息【支持多个数据分区生产】: kafka-console-producer.sh --broker-list 192.168.92.102:9092,192.168.92.102:9091,192.168.92.102:9093 --topic hello_kafka_10
消费者消费消息【注意:消费同一个主题】:kafka-console-consumer.sh --bootstrap-server 192.168.92.102:9093 --topic hello_kafka_10 &