远方的灯塔 - 专注于服务端技术分享 远方的灯塔 - 专注于服务端技术分享
首页
  • Java SE
  • Struts2
  • Hibernate
  • MyBatis
  • JAX-WS
  • 并发
  • 分布式
  • Git
  • 《C程序设计语言》
心情随笔
  • 文章分类
  • 文章标签
  • 文章归档
友情链接
关于我
GitHub (opens new window)

Terwer Green

一个后端老菜鸟
首页
  • Java SE
  • Struts2
  • Hibernate
  • MyBatis
  • JAX-WS
  • 并发
  • 分布式
  • Git
  • 《C程序设计语言》
心情随笔
  • 文章分类
  • 文章标签
  • 文章归档
友情链接
关于我
GitHub (opens new window)
  • Java SE

  • MyBatis

  • 大数据&分布式

    • Flink

      • 「精华」Flink 技术体系与学习路线
      • 「精华」Flink 入门第一步-从环境准备到运行 WordCount
        • 学习任务(预计耗时:1-2 周)
          • 📋 当前任务清单
          • 🎯 具体执行步骤:
          • 1. ​环境准备(第 1-2 天)
          • 2. ​创建第一个 Flink 项目(第 3-4 天)
          • 3. ​编写并运行基础 WordCount(第 5-7 天)
          • 4. ​核心概念学习(第 8-14 天)
          • 📚 学习资源推荐:
          • 🎯 验收标准(完成后回复我):
          • 💡 思考题(P7 级别需要思考):
        • 后记
        • 参考
      • 「精华」从有界与无界之辨到流批一体之合:现代数据架构的范式演进
  • 《设计模式》

  • 后端开发
  • 大数据&分布式
  • Flink
terwer
2025-10-09
目录

「精华」Flink 入门第一步-从环境准备到运行 WordCount

本文是 Flink 学习路线基础入门的详细任务指南。目标是帮助初学者在1-2周内建立对 Flink 的基本认知,完成从环境搭建到运行第一个程序的全过程。

好的!我们现在开始执行您的学习计划。根据我们之前制定的路线,您目前处于​阶段一:基础入门。

# 学习任务(预计耗时:1-2 周)

# 📋 当前任务清单

核心目标:建立对 Flink 的基本认知,搭建开发环境,运行第一个 Flink 程序。

官网:https://flink.apache.org/ (opens new window)

# 🎯 具体执行步骤:

# 1. ​环境准备(第 1-2 天)

  • [X] 安装 JDK 8 或 11(推荐 OpenJDK 11)
  • [X] 安装 IntelliJ IDEA(社区版即可)
  • [X] 安装 Maven 3.6+
  • [X] 验证环境:java -version​,mvn -version

# 2. ​创建第一个 Flink 项目(第 3-4 天)

  • [ ] 在 IDEA 中创建 Maven 项目
  • [ ] 在 pom.xml ​中添加 Flink 依赖:
<properties>
    <flink.version>1.17.0</flink.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-streaming-java</artifactId>
        <version>${flink.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-clients</artifactId>
        <version>${flink.version}</version>
    </dependency>
</dependencies>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 3. ​编写并运行基础 WordCount(第 5-7 天)

  • [ ] 实现批处理版本的 WordCount(处理文本文件)
  • [ ] 实现流处理版本的 WordCount(处理 Socket 实时数据)
  • [ ] 对比理解批流差异

​代码示例起点:

// 批处理WordCount
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
DataSet<String> text = env.readTextFile("path/to/file");
DataSet<Tuple2<String, Integer>> counts = text.flatMap(...).groupBy(0).sum(1);
counts.print();
1
2
3
4
5

# 4. ​核心概念学习(第 8-14 天)

  • [ ] 阅读官方文档"Concepts"部分
  • [ ] 理解 DataStream API 的 Source→Transformation→Sink 数据流
  • [ ] 学习​事件时间(Event Time) ​ 和​处理时间(Processing Time) 的区别
  • [ ] 了解水位线(Watermark)的基本概念(先建立直观认识)

# 📚 学习资源推荐:

  1. ​官方文档​:https://nightlies.apache.org/flink/flink-docs-release-1.17/ (opens new window)
  2. ​重点阅读:"DataStream API" → "Concepts" → "Time"

# 🎯 验收标准(完成后回复我):

  • [ ] 能在本地成功运行批处理和流处理的 WordCount 示例
  • [ ] 能清晰解释批处理与流处理的核心区别
  • [ ] 能说出事件时间 vs 处理时间的应用场景
  • [ ] 遇到至少 3 个环境或代码问题并成功解决(记录问题与解决方案)

# 💡 思考题(P7 级别需要思考):

  • 为什么 Flink 认为"批是流的特例"?这种设计理念有什么优势?
  • 如果数据有乱序,使用处理时间会有什么问题?

​完成以上所有任务后,请回复我"阶段一完成",我会为您制定阶段二的学习计划。

​每次回复格式建议:

进度汇报:
- 已完成:[具体内容]
- 遇到的问题及解决方案:[描述]
- 下一步准备:[您的计划]
1
2
3
4

现在请开始执行第一步:环境准备。有任何问题随时问我!

# 后记

可供参考的生成这篇文章的 prompt 如下:

按照你这个体系以及学习计划告知我下一步做什么,以后每次我完成之后都要告知我下一步做什么。
1

# 参考

https://yuanbao.tencent.com/chat/naQivTmsDa/b7ed31e1-64e2-491b-a759-da3af89bf7ba (opens new window)

编辑 (opens new window)
上次更新: 2025/10/27, 10:34:38
「精华」Flink 技术体系与学习路线
「精华」从有界与无界之辨到流批一体之合:现代数据架构的范式演进

← 「精华」Flink 技术体系与学习路线 「精华」从有界与无界之辨到流批一体之合:现代数据架构的范式演进→

最近更新
01
「精华」从有界与无界之辨到流批一体之合:现代数据架构的范式演进
10-09
02
「精华」Flink 技术体系与学习路线
10-09
03
深入剖析MyBatis的架构原理
12-04
更多文章>
Theme by Vdoing | Copyright © 2011-2025 Terwer Green | MIT License | 粤ICP备2022020721号-1 | 百度统计
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式