第一章:大数据技术概述 | Flink原理与实践
原文整理自《Flink原理与实践》,作者鲁蔚征,第一章
作者:AlgoCraft
时间:2025-08-19
一、什么是大数据?
大数据不仅仅是"数据量大",它具备 5个V特征 :
特征
含义
Volume
数据量巨大,从TB到ZB级别
Velocity
数据产生速度快,实时性强
Variety
数据类型多样,结构化、半结构化、非结构化并存
Veracity
数据真实性和准确性问题
Value
最终目标是从数据中挖掘出价值
二、从批处理到流处理
1. 数据与数据流
数据流(Data Stream) :源源不断的、无界的数据集合。
事件(Event) :数据流中的单个数据记录。
2. 批处理 vs 流处理
特点
批处理(Batch)
流处理(Stream)
数据类型
有界数据集
无界数据流
延迟
高(分钟、小时)
低(毫秒、秒)
典型场景
月度账单、日报统计
实时风控、实时监控
技术代表
Hadoop MapReduce
Flink、Kafka Streams
3. 为什么需要流处理框架?
实时性需求 :如股票交易、电商大促实时监控。
传统方案痛点 :
手动处理分布式逻辑复杂(如MPI)
数据倾斜、容错性差、时序错乱等问题突出
三、大数据技术演进
1. 代表性技术
技术
定位
特点
Hadoop
分布式存储+批处理
高容错、适合离线分析
Spark
批处理+流处理(微批)
内存计算、生态丰富
Kafka
消息队列+流处理
高吞吐、解耦生产消费
Flink
纯流处理(事件驱动)
低延迟、Exactly-Once、支持状态计算
2. 流处理框架的三代演进
代际
代表框架
特点
第一代
Storm
毫秒级延迟,不支持状态、无Exactly-Once
第二代
Spark Streaming
微批处理,秒级延迟,支持状态
第三代
Flink
事件级处理、毫秒级延迟、状态+Exactly-Once
四、架构演进:Lambda → Kappa
架构
核心思想
优缺点
Lambda
批处理层(准确)+ 流处理层(实时)
实时性强,但维护两套系统复杂
Kappa
仅用流处理层,Kafka存储历史数据
架构简化,但对流处理要求极高
五、流处理核心概念
概念
解释
延迟(Latency)
单个事件从产生到处理完成的时间
吞吐(Throughput)
单位时间内处理的事件数量
窗口(Window)
将无界数据流切分为有限块进行处理
时间语义
Event Time(事件时间)、Processing Time(处理时间)
Watermark
用于处理乱序事件的时间机制
状态(State)
跨事件存储的中间结果
检查点(Checkpoint)
容错机制,确保故障恢复后状态一致
六、编程语言选择
语言
特点
Flink支持情况
Java
企业级、生态成熟
核心API
Scala
函数式、简洁
与Java API兼容
Python
简洁、AI生态强
PyFlink(持续完善中)
SQL
易用、适合分析师
Table API & SQL
七、实战:用Kafka构建文本数据流
1. 启动Kafka服务
bash
复制代码
# 启动Zookeeper
bin/zookeeper-server-start.sh config/zookeeper.properties
# 启动Kafka
bin/kafka-server-start.sh config/server.properties
2. 创建Topic并发送消息
bash
复制代码
# 创建Topic
bin/kafka-topics.sh --create --topic Shakespeare --bootstrap-server localhost:9092
# 发送消息
bin/kafka-console-producer.sh --topic Shakespeare --bootstrap-server localhost:9092
> To be, or not to be: that is the question:
3. 消费消息
bash
复制代码
bin/kafka-console-consumer.sh --topic Shakespeare --from-beginning --bootstrap-server localhost:9092
八、小结
第一章为我们打下了坚实的基础:
理解了大数据的5V特征与分而治之的思想;
掌握了批处理与流处理的核心区别;
熟悉了Flink在流处理领域的技术优势;
学会了用Kafka构建实时数据管道。