- 什么是 Kafka
- 介绍
- 是一个消息系统
- 是一个高吞吐量、分布式的发布 / 订阅消息系统
- 最核心的是“削峰填谷”,谷和峰指的是数据流量的谷和峰,削峰填谷的含义即在数据生产方 A 和数据消费方 B 对数据流量的处理能力不同的时候,可以使用 Kafka 作为中间传输的管道
- 结构
- 消息的生产者(Producer)
- 生产者负责生产消息,将消息写入 Kafka 集群
- 消息的消费者(Consumer)
- 消费者从 Kafka 集群中拉取消息
- 消息的生产者(Producer)
- 概念
- 生产者与消费者
- 每一个消费者都属于一个特定的小组(Group)
- 同一个主题(Topic)的一条消息只能被同一个消费组下某一个消费者消费
- 不同消费组的消费者可同时消费该消息
- 消息
- 消息就是 Kafka 中传输的最基本的单位
- 除去我们需要传输的数据,Kafka 还会给每条消息增加一个头部信息以对每一条消息进行标记
- 主题(Topic)
- 一个主题其实就是一组消息
- 分区(Partition)和副本
- 每个主题会被分成若干个分区
- 每个分区是一个有序的队列,是在物理上进行存储的一组消息
- 一个分区会有若干个副本保障数据的可用性
- 偏移量
- 可以理解成一种消息的索引。
- 不能对数据进行随机读写,而是要按照顺序进行,所以需要给每条消息都分配一个按顺序递增的偏移量。这样消费者在消费数据的时候就可以通过制定偏移量来选择开始读取数据的位置
- 生产者与消费者
- 结构图
- 特点
- 消息持久化
- 处理速度快
- 扩展性
- 多客户端支持
- Kafka Streams
- 流处理
- 介绍
- 什么是 Flume
- 介绍
- Flume 是一个高可用、分布式的日志收集和传输的系统
- 组成
- 源(Source)
- 在获取到数据之后,Source 把数据传输给 Channel
- 通道(Channel)
- 把数据缓存在内存中,也可以写入磁盘
- 接收器(Sink)
- Sink 可以把数据写入 HBase
- 概念
- 源(Source)
- Source 是负责接收输入数据的部分,两种工作模式:
- 主动去拉取数据
- 等待数据传输过来
- Source 是负责接收输入数据的部分,两种工作模式:
- 通道(Channel)
- Channel 是一个中间环节,是临时存储数据的部分
- 接收器(Sink)
- Sink 则是封装好的输出部分
- 选择不同类型的 Sink,将会从 Channel 中获取数据并输出到不同的地方,比如向 HDFS 输出时就使用 HDFS Sink。
- 事件(Event)
- Flume 中传递的一个数据单元即称为事件。
- 代理(Agent)
- 一个代理就是一个独立的运行单元,由 Source、Channel 和 Sink 组成,一个 Agent 中可能有多个组件。
- 源(Source)
- 介绍
- Kafka 与 Flume 的比较
- Kafka 更侧重于数据的存储以及流数据的实时处理,是一个追求高吞吐量、高负载的消息队列。
- Flume 则是侧重于数据的采集和传输,提供了很多种接口支持多种数据源的采集,但是 Flume 并不直接提供数据的持久化。
- 实际的工作中有很多是把Kafka 和 Flume 搭配进行使用,比如线上数据落到日志之后,使用 Flume 进行采集,然后传输给 Kafka,再由 Kafka 传输给计算框架 MapReduce、Spark、Flink 等,或者持久化存储到 HDFS 文件系统中
大数据技术基础知识总结六
最新推荐文章于 2024-11-03 16:56:30 发布
Kafka是一个高吞吐量、分布式的发布/订阅消息系统,擅长数据的存储和流处理,提供消息持久化和多客户端支持。Flume则专注于数据采集和传输,支持多种数据源,但不直接提供数据持久化。两者常配合使用,Flume采集数据后传输至Kafka,再进一步处理或存储。
摘要由CSDN通过智能技术生成