赞
踩
01生产环境中,如何快速判断哪个算子存在反压呢?或者说哪个算子出现了性能问题?
将这个问题拆解成多步来分析:
在 Flink web ui 中,定位到一个具体的算子之后,查看 BackPressure 模块,通过颜色和数值来判断任务的繁忙和反压情况。
若颜色为红色,表示当前算子繁忙,有反压的情况;若颜色为绿色,标识当前算子不繁忙,没有反压。
2.举个实际 Flink 任务案例,这个 Flink 任务中有 Source、FlatMap、Sink 算子,如果 Source 算子有反压,那到底是哪个算子有性能问题呢?
上游算子在 web ui 显示有反压时,一般为下游算子存在性能问题。可以继续往下游排查,如果 FlatMap 也显示有反压,大概率是 Sink 算子存在性能问题;大数据培训如果 FlatMap 没有显示有反压,大概率是 FlatMap 算子存在性能问题。
3.大多数时候,Flink 会自动将算子 chain 在一起,那怎么判断具体是哪一个算子有问题?
第一种方式:Flink 提供了断开算子链的能力。
.process(xxx)
.uid("process")
.disableChaining() // 将算子链进行断开
.addSink(xxx)
.uid("sink");
CREATE TABLE source_table (
order_number BIGINT,
price DECIMAL(32,2)
) WITH (
'connector' = 'datagen',
'rows-per-second' = '10',
'fields.order_number.min' = '10',
'fields.order_number.max' = '11'
);
CREATE TABLE sink_table (
order_number BIGINT,
price DECIMAL(32,2)
) WITH (
'connector' = 'print'
);
insert into sink_table
select * from source_table
where order_number = 10;
我们来看看一个 SQL 任务在配置 pipeline.operator-chaining: false 前后的差异。
在配置 pipeline.operator-chaining: false 前,可以看到所有算子都 chain 在一起:
在配置 pipeline.operator-chaining: false 后,可以看到所有算子都没有 chain 在一起:
第二种方式:在 Flink 1.13 中,提供了火焰图,可以通过火焰图定位问题。火焰图需要配置 rest.flamegraph.enabled: true 打开
02反压有哪些危害?
03经常碰到哪些问题会任务反压?
总结就是:算子的 sub-task 需要处理的数据量 > 能够处理的数据量。一般会实际中会有以下两种问题会导致反压。
04怎么缓解、解决任务反压的情况?
05实时数据延迟是怎么监控的?报警策略又是怎么制定的?
几乎我问到的所有的小伙伴都能回到到 Flink 消费 Source 的 Lag 监控,我们可以把这个监控项升级一下,即 Kafka 到 Flink 延迟。原因如下:
以 Flink 消费 Kafka 为例,几乎所有的任务性能问题都最终能反映到 Kafka 消费 Flink 延迟,所以几乎 100% 的任务性能问题都能由 Kafka 到 Flink 延迟 这个监控发现。
06通过什么样的监控及保障手段来保障实时指标的质量?
当我提出这个问题的时候。群里的小伙伴给出了建设性意见:
那就是:等着用户工单投诉。
但是在博主的正确引导之下,小伙伴萌走上了正轨。
这里总结群里小伙伴的一些意见,得出了一个大多数企业都可以 快速构建 实时数据质量保障体系,从 事前、事中、事后 x 任务层面、指标层面 进行监控、保障:
1.事前:
2.事中:
3.事后:
07operator-state 和 keyed-state 两者的区别?
详细描述一下上面的问题:
operator-state 和 keyed-state 两者的区别?最大并行度又和它们有什么关系?举个生产环境中经常出现的案例,当用户停止任务、更新代码逻辑并且改变任务并发度时,两种 state 都是怎样进行恢复的?
2.operator-state:
3.keyed-state:
08你认为以后 Flink SQL 的发展趋势是 unbounded 类 SQL 为主还是窗口类 SQL 为主?原因?
博主认为是 unbounded 类 SQL。博主的观点如下:
但是在目前全链路 changelog 计算不是非常成熟的场景下,是没法完全摒弃窗口类应用的。目前业界做的好的就是阿里,阿里目前几乎不用窗口类应用,他们有一套成熟的 changelog 链路。
文章来源于数仓宝贝库
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。