Flink异常及重启容错处理

classic Classic list List threaded Threaded
4 messages Options
Z-Z
Reply | Threaded
Open this post in threaded view
|

Flink异常及重启容错处理

Z-Z
Hi, 各位大佬们,请教几个问题:
    背景:Flink程序在正常运行过程中由于某些原因抛出异常了(比如数据不正确、NullPointer等),设置了checkpoint,程序默认会无限重启,都没办法savepoint。
    问题1:  Flink希望开发者怎么处理程序的异常?
    问题2:checkpoint是否可以转化为savepoint,使得在没来得及savepoint之前能够进行恢复?
    问题3:如果我某条数据导致了异常,怎么样才忽略这条数据而不影响应用的状态和运行?
Reply | Threaded
Open this post in threaded view
|

回复:Flink异常及重启容错处理

Yichao Yang
Hi


1.生产环境中一般都需要try catch捕获异常,因为无法保证上游数据完全没有问题
2.程序默认无限重启代表你的数据有问题,重复处理错误数据,重复失败重启,根本原因还是在错误数据这里
3.某条数据出现异常,try catch + 加perf log + 加监控(报警)等


Best,
Yichao Yang




------------------ 原始邮件 ------------------
发件人:&nbsp;"Z-Z"<[hidden email]&gt;;
发送时间:&nbsp;2020年6月9日(星期二) 中午1:49
收件人:&nbsp;"user-zh"<[hidden email]&gt;;

主题:&nbsp;Flink异常及重启容错处理



Hi, 各位大佬们,请教几个问题:
&amp;nbsp; &amp;nbsp; 背景:Flink程序在正常运行过程中由于某些原因抛出异常了(比如数据不正确、NullPointer等),设置了checkpoint,程序默认会无限重启,都没办法savepoint。
&amp;nbsp; &amp;nbsp; 问题1:&amp;nbsp; Flink希望开发者怎么处理程序的异常?
&amp;nbsp; &amp;nbsp; 问题2:checkpoint是否可以转化为savepoint,使得在没来得及savepoint之前能够进行恢复?
&amp;nbsp; &amp;nbsp; 问题3:如果我某条数据导致了异常,怎么样才忽略这条数据而不影响应用的状态和运行?
Reply | Threaded
Open this post in threaded view
|

回复:Flink异常及重启容错处理

admin
In reply to this post by Z-Z
问题1:&nbsp; Flink希望开发者怎么处理程序的异常?
--异常数据当然需要用户自己try catch处理掉,否则即使从上个checkpoint恢复依然会使程序挂掉。
问题2:checkpoint是否可以转化为savepoint,使得在没来得及savepoint之前能够进行恢复?
—没太明白你的问题
问题3:如果我某条数据导致了异常,怎么样才忽略这条数据而不影响应用的状态和运行?
—本质是和问题1一样的,如果是flinksql任务,1.11会支持format.ignore-parse-errors


| |
Sun.Zhu
|
|
[hidden email]
|
签名由网易邮箱大师定制


在2020年06月9日 13:49,Z-Z<[hidden email]> 写道:
Hi, 各位大佬们,请教几个问题:
&nbsp; &nbsp; 背景:Flink程序在正常运行过程中由于某些原因抛出异常了(比如数据不正确、NullPointer等),设置了checkpoint,程序默认会无限重启,都没办法savepoint。
&nbsp; &nbsp; 问题1:&nbsp; Flink希望开发者怎么处理程序的异常?
&nbsp; &nbsp; 问题2:checkpoint是否可以转化为savepoint,使得在没来得及savepoint之前能够进行恢复?
&nbsp; &nbsp; 问题3:如果我某条数据导致了异常,怎么样才忽略这条数据而不影响应用的状态和运行?
Reply | Threaded
Open this post in threaded view
|

Re: 回复:Flink异常及重启容错处理

Yun Tang
Hi

我想你的问题是数据源中存在之前代码中没有很好处理的corner case,导致在处理某一条“脏数据”时,作业进入FAILED状态。此时即使从之前的checkpoint恢复,由于作业代码逻辑未变,之前的corner case依然无法处理,作业只能无限进去失败状态。

这种场景可以一开始时候将checkpoint的保留策略设置成RETAIN_ON_CANCELLATION [1],这样cancel作业之后,更改业务代码逻辑,从而可以处理之前的问题,再降作业上线从之前的checkpoint恢复 [2],这样做的话,数据是不会丢失的。

[1] https://ci.apache.org/projects/flink/flink-docs-stable/ops/state/checkpoints.html#retained-checkpoints
[2] https://ci.apache.org/projects/flink/flink-docs-stable/ops/state/checkpoints.html#resuming-from-a-retained-checkpoint

祝好
唐云

________________________________
From: Sun.Zhu <[hidden email]>
Sent: Sunday, June 14, 2020 0:20
To: [hidden email] <[hidden email]>
Cc: user-zh <[hidden email]>
Subject: 回复:Flink异常及重启容错处理

问题1:&nbsp; Flink希望开发者怎么处理程序的异常?
--异常数据当然需要用户自己try catch处理掉,否则即使从上个checkpoint恢复依然会使程序挂掉。
问题2:checkpoint是否可以转化为savepoint,使得在没来得及savepoint之前能够进行恢复?
―没太明白你的问题
问题3:如果我某条数据导致了异常,怎么样才忽略这条数据而不影响应用的状态和运行?
―本质是和问题1一样的,如果是flinksql任务,1.11会支持format.ignore-parse-errors


| |
Sun.Zhu
|
|
[hidden email]
|
签名由网易邮箱大师定制


在2020年06月9日 13:49,Z-Z<[hidden email]> 写道:
Hi, 各位大佬们,请教几个问题:
&nbsp; &nbsp; 背景:Flink程序在正常运行过程中由于某些原因抛出异常了(比如数据不正确、NullPointer等),设置了checkpoint,程序默认会无限重启,都没办法savepoint。
&nbsp; &nbsp; 问题1:&nbsp; Flink希望开发者怎么处理程序的异常?
&nbsp; &nbsp; 问题2:checkpoint是否可以转化为savepoint,使得在没来得及savepoint之前能够进行恢复?
&nbsp; &nbsp; 问题3:如果我某条数据导致了异常,怎么样才忽略这条数据而不影响应用的状态和运行?