当前位置: 首页 > news >正文

Flink原理与实践:第一章大数据技术概述总结

第一章:大数据技术概述 | Flink原理与实践

原文整理自《Flink原理与实践》,作者鲁蔚征,第一章
作者:AlgoCraft
时间:2025-08-19


一、什么是大数据?

大数据不仅仅是“数据量大”,它具备 5个V特征

特征含义
Volume数据量巨大,从TB到ZB级别
Velocity数据产生速度快,实时性强
Variety数据类型多样,结构化、半结构化、非结构化并存
Veracity数据真实性和准确性问题
Value最终目标是从数据中挖掘出价值

二、从批处理到流处理

1. 数据与数据流

  • 数据流(Data Stream):源源不断的、无界的数据集合。
  • 事件(Event):数据流中的单个数据记录。

2. 批处理 vs 流处理

特点批处理(Batch)流处理(Stream)
数据类型有界数据集无界数据流
延迟高(分钟、小时)低(毫秒、秒)
典型场景月度账单、日报统计实时风控、实时监控
技术代表Hadoop MapReduceFlink、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服务

# 启动Zookeeper
bin/zookeeper-server-start.sh config/zookeeper.properties# 启动Kafka
bin/kafka-server-start.sh config/server.properties

2. 创建Topic并发送消息

# 创建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构建实时数据管道。
http://www.dtcms.com/a/338932.html

相关文章:

  • 微软行业案例:英格兰足球超级联赛(Premier League)
  • 丝杆支撑座在自动化生产线中的关键支撑
  • arcgis-提取范围中最大占比面积的信息或唯一值
  • Jenkins服务器SSH公钥配置步骤
  • nodejs koa框架使用
  • 计算机大数据毕业设计推荐:基于Spark的气候疾病传播可视化分析系统【Hadoop、python、spark】
  • 《算法导论》第 30 章:多项式与快速傅里叶变换(FFT)
  • vue3中封装hooks
  • uniapp 应用未安装:软件包与现有软件包存在冲突
  • GEO 优化专家孟庆涛:技术破壁者重构 AI 时代搜索逻辑
  • Flask 路由与视图函数绑定机制
  • 正式签约 | OpenLoong 项目正式捐赠至开放原子开源基金会,成为全国首个具身智能方向孵化项目!
  • 【图像算法 - 18】慧眼辨良莠:基于深度学习与OpenCV的麦田杂草智能识别检测系统(附完整代码)
  • 哈希:两数之和
  • Mac(七)右键新建文件的救世主 iRightMouse
  • python将epub文件转pdf
  • UniApp 实现pdf上传和预览
  • 大模型级部署:从本地轻量化到云原生方案
  • 基于单片机智能密码锁/密码箱/门锁/门禁系统
  • Python爬虫实战:研究ICP-Checker,构建ICP 备案信息自动查询系统
  • PiscCode迅速集成YOLO-Pose 实现姿态关键点轨迹跟踪应用
  • 从繁琐到优雅:Java Lambda 表达式全解析与实战指南
  • 第1章 React组件开发基础
  • JxBrowser 8.10.0 版本发布啦!
  • iOS App 混淆工具实战,教育培训类 App 的安全保护方案
  • CTFshow系列——命令执行web34-37
  • RK3128增加usb调试模式,开放adb和root权限
  • leetcode 有效的括号
  • 西游记23:三藏不忘本,四圣试禅心;八戒挑行李;分工明确;
  • Java试题-选择题(11)