感谢小乐同学提供的信息!
视频40分钟
flink计算资源分配
flink精确一次语意
Flink 精确一次语义(EOS) 的保障,两阶段提交
准备阶段协调者向参与者发送预提交,参与者记录当前日志用于回滚和重放,实际提交时协调者向参与这发送提交请求,参与者真实提交数据,若参与者提交成功,则发送ack到协调者,协调者收到所有参与者的ack事务完成,否则向所有参与者发送回滚请求,按照之前记录的状态完成回滚并返回ack.
此外,flink精确一次需要kafka精确一次语义支持
Flink 最常用的常用算子包括:Map:DataStream → DataStream,输入一个参数产生一个参数,map 的功能是对输入的参数进行转换操作。Filter:过滤掉指定条件的数据。KeyBy:按照指定的 key 进行分组。Reduce:用来进行结果汇总合并。Window:窗口函数,根据某些特性将每个 key 的数据进行分组(例如:在 5s 内到达的数据)
flink某个任务卡住了怎么处理
Flink 中在使用聚合函数 GroupBy、Distinct、KeyBy 等函数时出现数据热点该如何解决?
数据倾斜和数据热点是所有大数据框架绕不过去的问题。处理这类问题主要从 3 个方面入手:
Key 的设计上
把热 key 进行拆分,先聚合热key,再二次聚合
参数设置
Flink 1.9.0 SQL(Blink Planner) 性能优化中一项重要的改进就是升级了微批模型,即
MiniBatch。原理是缓存一定的数据后再触发处理,以减少对 State 的访问,从而提升吞吐和减少数据的输出量。
hive调优
Flink 任务延迟高,想解决这个问题,你会如何入手?
在 Flink 的后台任务管理中,我们可以看到 Flink 的哪个算子和 task 出现了反压(网络流控)。最主要的手段是资源调优和算子调优。资源调优即是对作业中的 Operator 的并发数(parallelism)、CPU(core)、堆内存(heap_memory)等参数进行调优。作业参数调优包括:并行度的设置,State 的设置,checkpoint 的设置。
Flink 实现了多种重启策略。
默认情况下,如果没有定义其他重启策略,则选择固定延迟重启策略。
select a.username
from logtable a,logtable b,logtable c
where a.time=b.time + 1 and b.time=c.time+1
and a.action='loging' and b.action='loging' and c.action='loging'
and a.usernaem=b.username and a.username=c.username
Watermark 是 Apache Flink 为了处理 EventTime 窗口计算提出的一种机制, 本质上是一种时间戳。 一般来讲 Watermark 经常和 Window 一起被用来处理乱序事件。
Checkpoint机制加两阶段提交
Flink 通过实现两阶段提交和状态保存来实现端到端的一致性语义。 分为以下几个步骤:
若失败发生在预提交成功后,正式提交前。可以根据状态来提交预提交的数据,也可删除预提交的数据。
TaskManager 中最细粒度的资源是 Task slot,代表了一个固定大小的资源子集,每个TaskManager 会将其所占有的资源平分给它的 slot。
通过调整 task slot 的数量,用户可以定义 task 之间是如何相互隔离的。每个 TaskManager 有一个 slot,也就意味着每个 task 运行在独立的 JVM 中。每个 TaskManager 有多个 slot 的话,也就是说多个 task 运行在同一个 JVM 中。
而在同一个 JVM 进程中的 task,可以共享 TCP 连接(基于多路复用)和心跳消息,可以减少数据的网络传输,也能共享一些数据结构,一定程度上减少了每个 task 的消耗。 每个 slot 可以接受单个 task,也可以接受多个连续 task 组成的 pipeline,如下图所示,FlatMap 函数占用一个 taskslot,而 key Agg 函数和 sink 函数共用一个 taskslot:
联系客服