这门课解决什么工作场景
Flink 的核心价值在于实时数据处理,这是传统离线计算(如 Hive)无法胜任的领域。在企业级数据链路中,Flink 主要解决三件事:一是**实时统计与监控**,比如电商大促时的瞬时订单量、直播间在线人数、APP 日活(DAU)的秒级或分钟级展示;二是**实时报警与风控**,例如信用卡盗刷检测、异常登录拦截,要求毫秒级响应;三是**复杂事件处理(CEP)**,如匹配用户连续三次操作异常的行为模式。
这门课针对的是“需要构建或维护实时数仓”的开发岗位。如果你只是做日志存储或离线报表,学 Spark on Hive 即可;但当你听到“延迟低于 1 秒”、“实时推送”、“流式计算”这些关键词时,就是 Flink 的主场。资料线索显示该课程属于体系化培训,意味着它不只讲 API 用法,而是把 Flink 放在大数据全链路中讲解,解决的是“如何设计一个稳定、可扩展的实时计算作业”这一实际问题。
适合什么基础,建议先看哪几块
**前置基础**:你需要熟练掌握 Java 编程(尤其是集合、并发、Lambda),理解 Linux 基本操作和 Maven 项目构建。此外,最好对 Hadoop HDFS、Kafka 有初步认识,因为 Flink 的输入输出通常对接这两者。如果你是纯前端或数据分析背景,建议先补齐 Java 工程化能力,否则直接上手会非常吃力。
**学习路径建议**:
- **第一步:环境搭建与 WordCount**。不要跳过,这是理解 Flink 执行模型的基础。重点掌握 `StreamExecutionEnvironment` 和 DataStream API 的基本转换算子(map、filter、keyBy)。
- **第二步:核心概念突破**。深入理解 Time(事件时间、处理时间)、Watermark(水位线)、Window(窗口)这三驾马车。这是 Flink 与 Spark Streaming 的本质区别,也是面试高频考点。建议找实际案例(如每 5 秒统计一次 UV)来具象化理解 Watermark 如何解决乱序数据问题。
- **第三步:状态管理与容错**。了解 Checkpoint 机制和 State Backend(Memory/FS/RocksDB)。这部分理论较强,但却是保证生产环境数据一致性的关键,不要只求会用 API,要明白背后的 Exactly-Once 语义是如何实现的。
- **第四步:Table API & SQL**。现代 Flink 开发越来越多地使用声明式 SQL,务必单独花时间练习,这是你未来工作中最高频使用的工具。
学完能独立做什么,资料怎么配合
**学完后的独立能力**:
1. 能够独立搭建 Flink 集群(Standalone/YARN/K8s 任选其一),并部署作业。
2. 能编写完整的实时 ETL 作业:从 Kafka 读取数据,经过 Flink 清洗、关联维表(CDC 或查询数据库),最终写入 Redis、ES 或 ClickHouse。
3. 具备排查常见问题能力:如数据积压、反压(Backpressure)分析、状态过大导致的 OOM 优化、精确一次语义下的端到端一致性保障。
4. 能根据业务需求设计窗口策略(滚动、滑动、会话)和处理乱序数据的方案。
**资料配合练习方法**:
这套资料包是按实战项目逻辑组织的。不要只看不练。建议准备一套本地开发环境(IDEA + Flink 1.14+ + Kafka + MySQL + Redis),跟着课程中的项目部分,从零开始构建一个“实时用户行为分析平台”。
具体做法:先用 Kafka Producer 模拟生成用户点击流数据,然后用 Flink 消费这些数据,实现实时 PV/UV 统计,结果写入 Redis 供后端查询;同时开启 Flink 的 Checkpoint,模拟 TaskManager 宕机后自动恢复的场景,观察状态重建过程。只有亲手写过、调过 Bug、看过 Web UI 上的反压图,知识才真正属于你。资料中的文档和笔记用于查漏补缺,核心还是自己动手把 Demo 跑通。
课程目录
flink.png (45. 59 KB, ) 2023-4-19 22: 16 上传 课程介绍: 多易教育,专注于大数据领域各类开发技能培训,已帮助数以万计的技术青年走上大数据开发高薪职业之路,公司主要的培训班有Java大数据平台开发就业培训,大数据数据仓库开发就业培训,大数据ETL工程师就… 课程目录: flink资料 flink-day01 flink-day02 flink-day03 flink-day04 flink-day05 flink-day06 flink-day07 flink-day08 flink-day09 flink-day10 视频-day01 01Flink为什么这么火.mp4 243.14M 02Flink简介.mp4 330.48M 03Flink的standalone环境搭建.mp4 236.37M 04向flink集群提交job.mp4 218.06M 05创建flink的java项目模板.mp4 128.85M 06使用java编写实时WordCount.mp4 286.72M 07上一个程序的优化.mp4 227.42M 08使用javaLambda编写WordCount.mp4 290.97M 09使用scala编写WordCount.mp4 171.32M 10打包上传集群中执行.mp4 102.36M 11Source的并行度问题.mp4 334.48M 12lSource-ocal模式引入webui.mp4 142.15M 13Source-单并行的Source.mp4 187.37M 14Source-多并行的Source.mp4 195.66M 15Source-readFile的使用.mp4 190.13M 16Source-readTextFile的使用.mp4 168.44M 17Source-KafkaSource.mp4 350.16M 视频-day02 18Source-自定义Source01.mp4 171.64M 19Source-自定义Source02.mp4 304.56M 20Sink-printSink底层实现.mp4 254.30M 21Sink-writeAsText的使用.mp4 69.23M 22Sink-writeToSocke的使用.mp4 56.85M 23Sink-kafkaSink的使用.mp4 108.46M 24Sink-redisSink的使用.mp4 163.60M 25Sink-StreamingFileSink的使用.mp4 111.15M 26Sink-JDBCSink的使用.mp4 99.90M 27Transformation-map的基本使用.mp4 139.75M 28Transformation-map底层的实现.mp4 239.51M 29Transformation-flatMap底层实现.mp4 183.33M 30Transformation-filter底层的实现.mp4 119.32M 31Transformation-key的用法1.mp4 178.11M 32Transformation-key的用法2.mp4 133.35M 33Transformation-key的用法3.mp4 105.10M 视频-day03 35Transformation-reduce源码分析.mp4 184.29M 36Transformation-keyBy底层源码分析.mp4 268.65M 37Transformation-fold底层实现.mp4 73.17M 38Transformation-min底层实现.mp4 199.91M 38Transformation-sum底层实现.mp4 188.02M 39Transformation-min和minBy的区别.mp4 153.19M 40Transformation-union的使用.mp4 130.22M 41Transformation-connect的使用.mp4 142.39M 42Transformation-Iterate的使用.mp4 122.04M 43Transformation-project的使用.mp4 114.82M 44Transformation-split和select的使用.mp4 105.95M 45Transformation-rebalance的使用.mp4 208.68M 46Transformation-shuffle的使用.mp4 93.75M 47Transformation-Broadcast的使用.mp4 50.98M 48Transformation-rescaling的使用.mp4 36.59M 49Transformation-partitionCustom的使用.mp4 90.32M 视频-day04 50Flink的窗口和时间.mp4 123.45M 51Flink的窗口类型.mp4 145.00M 52CountWindow的使用.mp4 174.88M 53WindowFunction增量聚合.mp4 134.27M 54Window数据全量聚合.mp4 143.42M 55Window数据全量排序.mp4 47.40M 56Keyed的CountWindow.mp4 88.28M 57Keyed的CountWindow聚合.mp4 56.93M 58NoKeyedProcessingTime滚动窗口.mp4 158.27M 59KeyedProcessTime滚动窗口.mp4 147.31M 60NoKeyedProcessingTime滑动窗口.mp4 173.07M 61KeyedProcessingTime滑动窗口.mp4 118.41M 62NoKeyedProcessingTime会话窗口.mp4 47.42M 63KeyedProcessingTime会话窗口.mp4 71.03M 64NoKeyedEventTime滚动窗口.mp4 273.00M 65KeyedEventTime滚动窗口..mp4 265.50M 66多分区生成watermark窗口触发条件.mp4 171.44M 67EventTime会话窗口.mp4 66.26M 68WaterMark使用和详解.mp4 143.09M 视频-day05 69案例-关联mysql查询维度数据.mp4 336.84M 70案例-使用httpclient查询高德地图.mp4 209.11M 71窗口join的使用.mp4 311.68M 72窗口leftOuterJoin的使用.mp4 189.46M 73intervalJoin的使用.mp4 202.18M 74flink的task划分.mp4 174.97M 75flink共享资源槽.mp4 116.99M 76task算子链.mp4 159.82M 77startNewChain的使用.mp4 83.54M 78disableChaining的使用.mp4 40.74M 79设置资源槽组名称.mp4 215.88M 视频-day06 80为什么需要state.mp4 106.45M 81flink容错相关概念.mp4 103.07M 82固定次数重启策略.mp4 179.13M 83错误率重启策略.mp4 235.38M 84使用hashMap模拟KeyedState.mp4 160.15M 85自己实现一个简单的KeyedState.mp4 256.76M 86ValueState的基本使用.mp4 205.24M 87ValueState底层源码分析.mp4 245.52M 88MapState的使用和原理.mp4 213.50M 89ListState的使用和原理.mp4 148.00M 90使用ValueState实现ListState.mp4 100.82M 91Operator和KeyedState的区别.mp4 162.33M 92OperatorSate案例需求.mp4 40.65M 93使用OperatorState实现AtLeastOnceSource.mp4 463.11M 视频-day09 134flinkKafkaProduce实现ExactlyOnce.mp4 216.03M 135checkpoint完整过程.mp4 157.13M 136实现ExactlyOnce代码.mp4 545.20M 137数据采集架构.mp4 163.23M 138openresty安装.mp4 88.35M 139openresty整合lua.mp4 263.03M 140flume整合kafka.mp4 221.48M 141nginx的kafka-module.mp4 310.14M 视频-day10 142FlinkUtils工具类编写.mp4 114.39M 143工具类完善.mp4 174.84M 144数据预处理需求.mp4 122.02M 145数据预处理测试.mp4 616.01M 146布隆过滤器结合TTL.mp4 80.42M 147布隆过滤器结合TTL实现.mp4 425.62M 148热门商品topN需求.mp4 70.27M 149热门商品topN实现.mp4 360.47M 视频day07 100侧流输出获取窗口迟到的数据.mp4 184.88M 101WindowFunction的使用.mp4 214.76M 102aggregate结合windowFunction.mp4 206.98M 103ProcessWindowFunction的使用.mp4 150.43M 94ProcessFunction的使用.mp4 228.78M 95KeyedProcessFunction的使用.mp4 56.41M 96注册定时器OnTimer.mp4 245.28M 97注册订单群并集合ValueState聚合.mp4 143.66M 98OnTimer触发的时机.mp4 112.62M 99侧流输出.mp4 216.18M 视频day08 104State的TTL存活时间.mp4 247.79M 105案例-统计去重人数.mp4 331.04M 106BroadcastState的使用.mp4 550.32M 107QueryableState的使用.mp4 187.22M 108异步IO的使用.mp4 341.44M 109数据一致性的实现.mp4 254.45M 110向hdfs写checkpoint的出错问题.mp4 197.54M 111向hdfs写checkpoint的出依赖.mp4 275.81M 112flink的job重启从checkpoint恢复.mp4 141.29M 113checkpoint和savepoint的区别.mp4 117.47M






