flink任务挂掉后自动重启

classic Classic list List threaded Threaded
20 messages Options
Reply | Threaded
Open this post in threaded view
|

flink任务挂掉后自动重启

bradyMk
CONTENTS DELETED
The author has deleted this message.
Reply | Threaded
Open this post in threaded view
|

Re: flink任务挂掉后自动重启

Congxian Qiu
Hi
    1 Flink 的 RestartStrategy[1] 可以解决你的问题吗?
    2 从 checkpoint 恢复 这个,可以尝试记录每个作业最新的 checkpoint 地址,也可以在启动的时候从 hdfs 获取一下

[1]
https://ci.apache.org/projects/flink/flink-docs-release-1.11/zh/dev/task_failure_recovery.html
Best,
Congxian


bradyMk <[hidden email]> 于2020年10月30日周五 上午11:51写道:

>
> flink任务一般都是7*24h在跑的,如果挂掉,有没有什么办法自动重启任务?之前都是任务挂掉然后手动再提交一次任务,但是不可能每次挂掉都可以手动重启;另外,如果对于没做checkpoints的任务,可以通过定时脚本监控yarn,如果任务不存在,则重新提交任务,但是,对于做了checkpoints的任务,我们提交的时候就需要指定ck的目录,这个目录都是在变的,那么又该如何让任务挂掉后能自动重启呢?希望能得到大佬们的指点~
>
>
>
> -----
> Best Wishes
> --
> Sent from: http://apache-flink.147419.n8.nabble.com/
Reply | Threaded
Open this post in threaded view
|

Re: flink任务挂掉后自动重启

bradyMk
CONTENTS DELETED
The author has deleted this message.
Reply | Threaded
Open this post in threaded view
|

回复: flink任务挂掉后自动重启

史 正超
可以通过使用rest api 定时拉取checkpoints的状态
rest api uri为  {cluster}/jobs/{jobid}/checkpoints

返回的是json,里面有最近一次的ck记录和 历史记录。
________________________________
发件人: bradyMk <[hidden email]>
发送时间: 2020年10月30日 6:52
收件人: [hidden email] <[hidden email]>
主题: Re: flink任务挂掉后自动重启

谢谢您的解答~
重启策略确实可以解决任务故障重启,但是有的时候(例如集群资源不够),任务会直接被kill掉,我想问的是针对被kill掉的任务,有没有什么方法可以自动重启,特别是带有ck的任务,如果想要自动重启,如何在启动的时候自动去hdfs上获取最新的ck地址呢?



-----
Best Wishes
--
Sent from: http://apache-flink.147419.n8.nabble.com/
Reply | Threaded
Open this post in threaded view
|

Re: 回复: flink任务挂掉后自动重启

bradyMk
CONTENTS DELETED
The author has deleted this message.
Reply | Threaded
Open this post in threaded view
|

Re: 回复: flink任务挂掉后自动重启

zhisheng
hi,

提供一个方案,平台层可以做到作业自动拉起,那么需要平台层有这些信息。

1、作业启动的时候保存一下作业的 jobid 信息

2、平台轮训检测作业的状态,如果作业挂了,直接从配置的 checkpoint 基础路径 + jobid 目录下去找最新的目录(里面含
_metadata)

eg: hdfs:/flink/checkpoints/9b4cddb385b0c5db96b0774769867673/chk-15109

然后平台层将作业从 checkpoint 拉起,当然这个是否自动拉起,拉起的次数可以让用户去选择。

Best!
zhisheng

bradyMk <[hidden email]> 于2020年10月31日周六 下午4:20写道:

> 好的,我去试试这种方法,感谢~
>
>
>
> -----
> Best Wishes
> --
> Sent from: http://apache-flink.147419.n8.nabble.com/
>
Reply | Threaded
Open this post in threaded view
|

Re: 回复: flink任务挂掉后自动重启

bradyMk
CONTENTS DELETED
The author has deleted this message.
Reply | Threaded
Open this post in threaded view
|

Re: 回复: flink任务挂掉后自动重启

bradyMk
This post was updated on .
In reply to this post by zhisheng
CONTENTS DELETED
The author has deleted this message.
Reply | Threaded
Open this post in threaded view
|

Re: flink任务挂掉后自动重启

silence-2
In reply to this post by bradyMk
说一下我们平台的实现方式
1、自定义metricReporter,假如任务开启了checkpoint,reporter会自动的将最新完成的checkpoint路径进行上报
   
可参考https://ci.apache.org/projects/flink/flink-docs-release-1.11/monitoring/metrics.html#checkpointing
2、平台会有是否重试和是否基于checkpoint进行恢复的选项
3、假如上述两选项都开启了之后,可以对运行失败的任务基于最新的checkpoint进行拉起



--
Sent from: http://apache-flink.147419.n8.nabble.com/
Reply | Threaded
Open this post in threaded view
|

Re: 回复: flink任务挂掉后自动重启

zhisheng
In reply to this post by bradyMk
平台层的意思就是说:假设你们有实时计算平台,那么可以考虑把这个想法做在你们的平台里面。

bradyMk <[hidden email]> 于2020年11月2日周一 上午11:40写道:

> zhisheng大佬好~我不是很理解您说的平台层具体是什么意思,指的是什么。。。
>
>
>
> -----
> Best Wishes
> --
> Sent from: http://apache-flink.147419.n8.nabble.com/
Reply | Threaded
Open this post in threaded view
|

Re: 回复: flink任务挂掉后自动重启

bradyMk
CONTENTS DELETED
The author has deleted this message.
Reply | Threaded
Open this post in threaded view
|

Re: 回复: flink任务挂掉后自动重启

bradyMk
In reply to this post by 史 正超
CONTENTS DELETED
The author has deleted this message.
Reply | Threaded
Open this post in threaded view
|

Re:flink任务挂掉后自动重启

hailongwang
In reply to this post by bradyMk
Hi,
 Flink 自动重启策略[1]可以满足你的需求?
一般来说,如果 container 挂的话,yarn 会重新拉起。Job 因为某些异常失败,flink 也有 策略进行拉起。
[1]
https://ci.apache.org/projects/flink/flink-docs-release-1.11/ops/config.html#fault-tolerance
Best,
Hailong Wang

在 2020-10-30 10:51:29,"bradyMk" <[hidden email]> 写道:
>flink任务一般都是7*24h在跑的,如果挂掉,有没有什么办法自动重启任务?之前都是任务挂掉然后手动再提交一次任务,但是不可能每次挂掉都可以手动重启;另外,如果对于没做checkpoints的任务,可以通过定时脚本监控yarn,如果任务不存在,则重新提交任务,但是,对于做了checkpoints的任务,我们提交的时候就需要指定ck的目录,这个目录都是在变的,那么又该如何让任务挂掉后能自动重启呢?希望能得到大佬们的指点~
>
>
>
>-----
>Best Wishes
>--
>Sent from: http://apache-flink.147419.n8.nabble.com/
Reply | Threaded
Open this post in threaded view
|

Re: 回复: flink任务挂掉后自动重启

zhisheng
In reply to this post by bradyMk
平台层是将功能自动化,产品化,没有平台总可以手动按照这个思路去实现。

bradyMk <[hidden email]> 于2020年11月2日周一 下午2:27写道:

> 那我们没有这样的计算平台该怎么办呢?
>
>
>
> -----
> Best Wishes
> --
> Sent from: http://apache-flink.147419.n8.nabble.com/
>
Reply | Threaded
Open this post in threaded view
|

Re: 回复: flink任务挂掉后自动重启

bradyMk
CONTENTS DELETED
The author has deleted this message.
Reply | Threaded
Open this post in threaded view
|

Re: Re:flink任务挂掉后自动重启

bradyMk
In reply to this post by hailongwang
CONTENTS DELETED
The author has deleted this message.
Reply | Threaded
Open this post in threaded view
|

Re:Re: Re:flink任务挂掉后自动重启

hailongwang
Hi bradyMk,


在 on yarn 的模式下,如果某个container 被kill 了,是会重新拉起的。
至于整个 job 被kill 了,这种情况应该是自己手动显示的去停止把?
最于重启的话,重启次数可以设置个非常大的数字(~无限重启),但是一旦 job 一直这么重启,我个人任务就算重新拉起也是没用的把?
  这个时候应该结合平台的告警策略来进行人工干预了。
Best,
Hailong Wang




在 2020-11-03 09:32:50,"bradyMk" <[hidden email]> 写道:
>您好,你说的这个策略是失败重启策略,但是如果job在某些情况被kill掉,或者重启超过重启次数,任务也会退出;我主要是针对这种情况重启的
>
>
>
>-----
>Best Wishes
>--
>Sent from: http://apache-flink.147419.n8.nabble.com/
Reply | Threaded
Open this post in threaded view
|

Re: Re: Re:flink任务挂掉后自动重启

LakeShen
Hi bradyMk,

    整体上有两种方法:
   1. 任务被 Kill 掉后,拉起时,从checkpoint 恢复,这个就需要知道任务结束之前,最新一次的 checkpoint
信息,然后从这开始恢复。
   Flink 任务 checkpoint 的路径是 checkpoint 根路径 + job_id 组成的路径,所以你可以从这个目录找到
chk-xx 最新的 checkpoint ,然后进行恢复即可。
   当然,还有其他方法知道任务被kill 前,最新一次的 checkpoint 信息。你选择一种适合你的方式就行,然后做成自动化的,降低运维成本。

   2. 任务被 kill 掉后,从 Savepoint 恢复,可以定时做一次 savepoint
,不过这种方法由于状态和当前时间有间隙,可能会导致数据重放,从而下游可能会有消息重复。

  建议选择 1 来实现。

Best,
LakeShen



hailongwang <[hidden email]> 于2020年11月3日周二 下午7:21写道:

> Hi bradyMk,
>
>
> 在 on yarn 的模式下,如果某个container 被kill 了,是会重新拉起的。
> 至于整个 job 被kill 了,这种情况应该是自己手动显示的去停止把?
> 最于重启的话,重启次数可以设置个非常大的数字(~无限重启),但是一旦 job 一直这么重启,我个人任务就算重新拉起也是没用的把?
>   这个时候应该结合平台的告警策略来进行人工干预了。
> Best,
> Hailong Wang
>
>
>
>
> 在 2020-11-03 09:32:50,"bradyMk" <[hidden email]> 写道:
> >您好,你说的这个策略是失败重启策略,但是如果job在某些情况被kill掉,或者重启超过重启次数,任务也会退出;我主要是针对这种情况重启的
> >
> >
> >
> >-----
> >Best Wishes
> >--
> >Sent from: http://apache-flink.147419.n8.nabble.com/
>
Reply | Threaded
Open this post in threaded view
|

Re: Re:Re: Re:flink任务挂掉后自动重启

bradyMk
In reply to this post by hailongwang
CONTENTS DELETED
The author has deleted this message.
Reply | Threaded
Open this post in threaded view
|

Re: Re: Re:flink任务挂掉后自动重启

bradyMk
In reply to this post by LakeShen
CONTENTS DELETED
The author has deleted this message.