整体框架
- Flink概述
- Flink上手部署
- Flink架构
- DataStream API(算子)
- Flink中的时间和窗口:窗口就是范围
- 处理函数:底层函数
- 状态管理:
- 容错机制:报错重启后能够从出错的位置继续执行
- FlinkSQL:功能逐步完善
基于数据流的有状态计算
- 正确性保证
- 精确一次(Exactly-once)状态一致性
- 事件时间处理
- 成熟的迟到数据处理
- 分层API:底层处理函数、java API、Flink SQL
- 聚焦运维:灵活部署、高可用、保存点
- 大规模计算:水平扩展架构、支持超大状态、增量检查点机制
- 性能卓越:低延迟(毫秒级的计算)、高吞吐(每秒数百万事件处理)、内存计算
- 可以连接到常用的存储系统:Kafka, Hive, JDBC, HDFS, Redis等
流式场景
- 事件驱动应用:事件驱动型应用是一类具有状态的应用,它从一个或多个事件流提取数据,并根据到来的事件触发计算、状态更新或其他外部动作。
- 流批分析:既支持流处理、也支持批处理
- 数据管道&ETL:提取-转换-加载(ETL)是一种在存储系统之间进行数据转换和迁移的常用方法。
状态
把流处理需要使用到的额外数据保存为一个“状态”,状态会跟着流动的数据动态的变化。
Flink分层API
- SQL
- Table API
- DataStream
- 有状态流处理(底层 API 处理函数)
集群剖析
- JobManager:协调Flink程序的分布式执行,对完成的task或执行失败做出反应,协调检查点,恢复还原状态。一般集群中只有一个。
- TaskManager: 执行作业流的Task, 并且缓存和交换数据流。存在一个或者多个。
部署模式
-
会话模式:多个任务共享一个任务管理器,适合多个执行时间短、使用资源少的任务。先起集群再提交作业
-
单作业模式:一个作业,专用的任务管理器,程序运行在客户端机器上。
-
应用模式:一个作业,专用的任务管理器,程序运行在集群机器上。
Standalone模式
- 配置集群参数
- 使用./jobmanager.sh start | ./taskmanager.sh start 单点启动
- 使用bin/start-cluster.sh | bin/stop-cluster 群起群关
YARN运行模式
后续补充