实时计算-Flink技术总结
本文记录了Flink技术的一些基本概念和关键技术。
Flink是什么?
实时流计算框架、无界数据
同类竞品
Spark Streaming(mini batch处理)
与其他Hadoop生态之间的依赖关系
Hbase作为外部存储(列式存储)应对大数据存储,背后是Htable,底层是HDFS数据。
Redis作为外部缓存,处理一些高频访问的场景,比如黑名单、白名单等
为什么?
因为现实场景中有很多实时计算的场景,同时spark 有局限性。
具体是如何实现的?
部署框架:资源调度(Yarn、K8s、本地部署)、Job Manager(JobGraph、容灾等功能) 、 Task Manager(具体的执行节点)、后端state(内存、rocksDB或HDFS)
资源是如何分配的: TaskSlot、相互之间通信(actor系统) 、内存管理(堆内、堆外内存)
内部技术框架:算子(具体的计算逻辑,包括map、reduce、keyby、 groupby等)、窗口(用户侧接口,包括滑动窗口、翻转窗口等)、checkpoint(分布式快照) 、State(用于存储算子执行过程中的数据)、watermark机制
几个关键的技术:State技术、Checkpoint技术、反压技术、exactly once技术、高性能技术、JobGraph技术
Flink SQL 技术
// 待开始
有哪些使用场景?
- 计算当前微博热搜 TOP N
- 计算当前用户DAU、用户停留时长等
经典的一些问题
1. 性能出现瓶颈怎么办?如何进行调优?
问题定位: 否有反压、数据是否有倾斜
解决方案:资源调整(并行度、作业参数调优、Java内存调优)、用户代码调优(数据打散、预聚合等)
2. Exactly once 是如何保证的?
checkpoint 、二阶段提交协议、下游保证分布式事务
3. 高性能技术有哪些?
// TODO 待开始
实时计算-Flink技术总结
https://yyb345.github.io/11-实时计算flink/