当前位置: 首页 > 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.lryc.cn/news/625731.html

相关文章:

  • Ubuntu、CentOS、AlmaLinux 9.5的 rc.local实现 开机启动
  • 构建自主企业:AgenticOps 的技术蓝图
  • VS Code 终端完全指南
  • Java 大视界 -- Java 大数据机器学习模型在自然语言处理中的多语言翻译与文化适应性优化
  • Transformer十问
  • Java试题-选择题(11)
  • OpenHarmony 之多模态输入子系统源码深度架构解析
  • 记录一次问题,点击详情时设置Editor不可用,点击修改时也不可用了
  • Node.js 在 Windows Server 上的离线部署方案
  • 如何将任意文件一键转为PDF?
  • Markdown to PDF/PNG Converter
  • UniApp 微信小程序之间跳转指南
  • 专题:2025母婴行业消费洞察与分龄营养趋势报告|附40 +份报告PDF、交互图表数据汇总下载
  • 微信小程序实现蓝牙开启自动播放BGM
  • Java技术总监的成长之路(技术干货分享)
  • CAD图纸如何批量转换成PDF格式?
  • 【动态规划:路径问题】最小路径和 地下城游戏
  • 【网络运维】Ansible roles:角色管理
  • ES支持哪些数据类型,和MySQL之间的映射关系是怎么样的?
  • 点大餐饮独立版系统源码v1.0.3+uniapp前端+搭建教程
  • nuxt使用vue-echarts第三方插件报错document is not defined
  • 亚远景-ISO/PAS 8800认证:从框架到实践的合规路径与挑战
  • 2.Kotlin 集合 List 所有方法
  • Js逆向案例 Scrape Spa2(Webpack自吐)
  • Ansible 大项目管理实践笔记:并行任务、角色管理与负载均衡架构部署
  • 基于Python的宠物服务管理系统 Python+Django+Vue.js
  • 当机器猫遇上具身智能:一款能读懂宠物心思的AI守护者
  • XML 序列化与操作详解笔记
  • Gemini CLI 自定义主题配置
  • 块存储 对象存储 文件存储的区别与联系