Flink学习开篇

Flink主要用于解决一系列数据处理相关的问题.
Flink的核心点在于有状态计算(官网首页:Stateful Computations over Data Streams).

Apache Flink 是一个用于对无界和有界数据流进行有状态计算框架和分布式处理引擎。Flink 被设计为能够在所有常见的集群环境中运行,以内存速度和任意规模进行计算。

1. 应用场景

Flink的应用场景主要分为以下几类:

  • 实时数据分析/处理:网站流量分析、用户行为分析、开发实时ETL、实时监控指标分析
  • 异常检测:金融交易场景风险评估、欺诈检测
  • 日志分析:服务器和应用程序日志,用于故障排查、性能监控
  • 其它:推荐系统、社交媒体、金融交易…

它的优点包括:处理实时数据的低延迟,数据一致性和准确性、大规模数据处理、复杂的事件处理、容错与恢复、流批统一

2. Flink核心

2.1 Flink基本概念和架构

2.2 Flink编程模型

2.3 其它

窗口操作、状态管理、时间处理(事件时间、处理时间、摄入时间)、容错和检查点、部署和运行、性能优化

3. Flink环境搭建

4. Flink原理

  • 任务调度和执行
  • 数据并行处理
  • 流处理
  • 窗口机制
  • 状态管理
  • 检查点和容错
  • 数据传输
  • 结果输出

5. 学习资料

5.1 学习方法

  • 基础知识:分布式系统、数据结构和基本的算法
  • 官方文档:
  • 在线课程和教程
  • 实践项目、研究案例
  • 阅读相关书籍、深入理解原理
  • 对比其他流处理框架

5.2 学习资料

极客时间

Github Flink教程

《Flink官方文档》监控Wikipedia 编辑流

1
2
3
4
5
6
7
8
9
mvn archetype:generate \
-DarchetypeGroupId=org.apache.flink \
-DarchetypeArtifactId=flink-quickstart-java \
-DarchetypeVersion=1.2.0 \
-DgroupId=wiki-edits \
-DartifactId=wiki-edits \
-Dversion=0.1 \
-Dpackage=wikiedits \
-DinteractiveMode=false