第一章:大数据技术概述 | 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服务
bin/zookeeper-server-start.sh config/zookeeper.properties
bin/kafka-server-start.sh config/server.properties
2. 创建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. 消费消息
bin/kafka-console-consumer.sh --topic Shakespeare --from-beginning --bootstrap-server localhost:9092
八、小结
第一章为我们打下了坚实的基础:
理解了大数据的5V特征与分而治之的思想; 掌握了批处理与流处理的核心区别; 熟悉了Flink在流处理领域的技术优势; 学会了用Kafka构建实时数据管道。