【flink 零】flink技术概览:flink各项技术一览

整理了在学习flink的过程中的各项知识的入口,以便查阅、回顾以及一些查漏补缺。持续更新。

一. flink概述:

我们首先从flink的特点、使用场景、作用、架构、运行模型等方面先有一个整体的认识。即它是什么、能做哪些事,怎么做的。

【概述|基础】flink系列01:flink概述:flink能做些什么、flink的特点有那些、适合哪些场景、flink的技术的基石是来自哪篇论文

【原理|架构】Flink系列02:Flink整体架构-成员之间的协调

【运维/安装】Flink + MinIO:实现light-weighting思路下的集群(集群、高可用&&POC、快速搭建)

 

二. flink部署模式与集群搭建

集群模式有哪些、集群搭建的细节、flink高可用原理等

【部署模式】Flink系列03-部署模式+集群资源提供者

 

三. flink的编程模型、相关原理

flink的编程模型:编程接口、程序结构、数据类型:类型支持与typeinformation获取。

【内存模型】Flink内存模型:从宏观(Flink内存模型)、微观(Flink内存结构)、数据传输等角度分析Flink的内存管理

【原理|数据传输】Flink系列之数据传输原理
ing

 

四. flink dataStream

  • 编程模型、时间概念与水印、窗口计算、作业链和资源组、异步操作。
  • api中主要有输入源、转换算子、数据输出等api的操作。

【架构|概念|性能调优】slot相关概念:Flink的job的并行度是怎么计算的。算子链与slot共享是如何优化flink资源与计算的

 

五. flink sql和table api的操作

  • sql与table api
  • 常见场景下的sql使用等
  • 自定义函数
  • connector

【flink SQL基础|概念】flink sql之时态表:join时要使用proctime作为时态表的time

【双流(1)|原理】flink 双流join原理(1)Interval Join:state过大? 回撤现象出现时,sink如何处理,还有如何优化回撤?数据出现shuffle时join是如何处理的?

ing
 

六. flink的状态管理

对于一些任务,比如join、聚合或者是去重等操作需要flink保存状态来实现相关语义。对于flink的状态管理有如下几个方面:
有状态计算的原理是什么
checkpoint和savepoint
状态管理区
querable state

【状态管理|概述】Flink的状态管理:为什么需要state、怎么保存state、对于state过大怎么处理

ing
 

七. flink监控与性能优化

监控指标
反压的监控与优化
checkpoint的监控与优化
Flink内存优化:flink内存配置、Network Buffers的配置

【监控|性能调优】Flink 性能调优1之 反压

【内存模型】Flink内存模型:从宏观(Flink内存模型)、微观(Flink内存结构)、数据传输等角度分析Flink的内存管理

【性能调优1】(重点)Flink常见内存问题及调优指南(一)

【性能|调优】Flink on yarn双流join问题分析+性能调优思路

 

八. 其他经验

1. 源码改造

【源码|编译】flink 12 源码编译及使用idea运行、debug

【源码改造|性能】Flink jdbc connector 源码改造sink之 clickhouse多节点轮询写与性能分析

【源码改造】Flink-jdbc-connector源码简析+改造支持谓词下推

【源码改造】flink JDBC connector 源码改造之 类型转换 java.time.LocalDateTime cannot be cast to java.sql.Timestamp

 
 

2. 排错经验

【排错】记一次(flink on yarn) 提交任务的排错之旅(yarn队列、namenode、resourcemanager、flink job全崩盘)

【性能|调优】Flink on yarn双流join问题分析+性能调优思路

【job排错】记一次flink on hadoop with per-job 报错排查
 

 

3. 面试问答 ing

怎么做压力测试和监控?

产生的数据流的速度如果过快,而下游的算子消费不过来的话,会产生背压。背压的监控可以使用Flink Web UI来可视化监控Metrics。
 
反压的场景:

  • 因为watermark设置过大导致某一时刻数据量激增导致下游数据出现反压:可以将设置watermark设置的小一点,然后把迟到的元素发送到测输出流中,晚一点更新结果。
  • sink消费慢出现反压:横向拓展,增加并行度,让不同slot执行,分散那一点的压力。

 

flink的相关优化

  • 集群角色的内存配置方面
  • 合理利用资源:slot和并行度、slot共享
  • 数据倾斜:null过多,加盐打散。
  • 广播变量:小数据集与大数据进行join:将小数据集广播,避免代价高的冲分区。
  • 源码改造:谓词下推、轮询写入

 

海量key怎么去重?

因为可能有上亿个key,内存放不下,可以考虑使用布隆过滤器(Bloom Filter)来去重。

 
Flink中的exactly-once语义如何实现的,状态如何存储的?

Flink依靠checkpoint机制来实现exactly-once语义,如果要实现端到端的exactly-once,还需要外部source和sink满足一定的条件。

 
Flink程序在面对数据高峰期时如何处理?

使用大容量的Kafka把数据先放到消息队列里面作为数据源,再使用Flink进行消费,不过这样会影响一点实时性。

 
Flink的checkpoint机制对比spark有什么不同和优势?

spark streaming的checkpoint仅仅是针对driver的故障恢复做了数据和元数据的checkpoint。
flink的checkpoint机制采用的是轻量级的分布式快照,实现了每个算子的快照,及流动中的数据的快照。

 
 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

roman_日积跬步-终至千里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值