作者: | 来源:互联网 | 2023-08-13 19:21
kafka官网:http://kafka.apache.org
kafka之前及叫分布式消费系统,现在叫分布式流式平台
1.发布与订阅
像消息系统一样读写数据流。
2.过程
编写实时响应事件的可伸缩流处理应用程序。
3.商店
将数据流安全地存储在分布式、复制的、容错的集群中。
Kafka通常用于两大类应用程序:
构建实时流数据管道,可靠地获取系统或应用程序之间的数据
构建转换或响应数据流的实时流应用程序
首先是几个概念:
Kafka作为集群运行在一个或多个服务器上,这些服务器可以跨多个数据中心。
Kafka集群将记录流存储在称为主题的类别中。
每个记录由一个键、一个值和一个时间戳组成。
Kafka 消息系统
app -----> Flum(收集)—> kafka ----->计算(Spark,Flink) 夯住或者作业失败
Kafka: 3个进程 producer broker consumer
生产者 boker (消息缓冲作用) 消费者
列举项目:
flume --> HDFS --> Hive 再用Spark 离线计算
Flum(收集)—> kafka ----->计算(Spark,Flink) 在线实时
详解:当Flum接受数据要传输给Spark进行计算,例如遇到节假日,双十一等,数据量猛增的时候就必须用到kafka进行缓存,Spark如果只能计算2G的容量,一旦数据增加到100G,如果直接从Flume到Sprak,Spark会夯住,有kafka的存在大大的减少了Spark的压力,做实时就kafka+Sprak,做离线用hive+Spark。
Kafka的源码是Scala写的,一般企业用到的是2.10.4版,
相关概念
1.producer:
消息生产者,发布消息到 kafka 集群的终端或服务。
2.broker:
kafka 集群中包含的服务器。
3.topic:
每条发布到 kafka 集群的消息属于的类别,即 kafka 是面向 topic 的。
4.partition:
partition 是物理上的概念,每个 topic 包含一个或多个 partition。kafka 分配的单位是 partition。
5.consumer:
从 kafka 集群中消费消息的终端或服务。
6.Consumer group:
high-level consumer API 中,每个 consumer 都属于一个 consumer group,每条消息只能被 consumer group 中的一个 Consumer 消费,但可以被多个 consumer group 消费。
7.replica:
partition 的副本,保障 partition 的高可用。
8.leader:
replica 中的一个角色, producer 和 consumer 只跟 leader 交互。
9.follower:
replica 中的一个角色,从 leader 中复制数据。
10.controller:
kafka 集群中的其中一个服务器,用来进行 leader election 以及 各种 failover。
12.zookeeper:
kafka 通过 zookeeper 来存储集群的 meta 信息。