抑郁症健康,内容丰富有趣,生活中的好帮手!
抑郁症健康 > shell脚本 flink job挂掉自动从上一个checkpoint重启

shell脚本 flink job挂掉自动从上一个checkpoint重启

时间:2023-05-26 20:36:01

相关推荐

场景

当Flink job 里缓存数据放在在HashMap时,Flink job 异常挂掉之后再次重启缓存数据就会丢失, 所以在Flink job中使用MapState缓存数据,保存在Rocksdb里,当Flink job 挂掉后,从最近成功的checkpoint恢复重启,不丢失缓存数据。

脚本实现主要功能

定时任务监控,每分钟轮询一次,当发现Flink job异常挂掉了, 需要及时从最近成功一次的checkpoint恢复并重启。

shell脚本 github地址

/victor9309/shell_restart_from_checkpoint

Flink 保留checkpoint

env.getCheckpointConfig.enableExternalizedCheckpoints(ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION)

当Flink job 挂掉后,保留checkpoint

定时任务

crontab -e

####=====Flink Job 定时任务#*/1 * * * * cd /home/hadoop/mainFabFlinkJob/MainFabWindowApplication; sh monitor.sh >> ./log/monitor.log & > /dev/null 2>&1

shell脚本目录结构

| —MainFabWindowApplication

| ------- get_checkpoint_dir.sh

| ------- JobID.conf

| ------- monitor.sh

| ------- start_from_checkpoint.sh

| ------- start.sh

| ------- log

| ----------- MainFabWindowApplication.log

| ------- — monitor.log

JobID.conf

内容:

MainFabWindowApplication_JobID=3d9ae1714b82adcc1b04eb7cd624c211

解释:

保留 Flink 的 Job ID, Flink Job从某个checkpoint重启需要JobID

指定checkpoint参数:

-s hdfs://nameservice1:8020/flink-checkpoints/3d9ae1714b82adcc1b04eb7cd624c211/chk-4

启动命令:

flink-1.12.5/bin/flink run -c com.hzw.fdc.application.online.MainFabWindowApplication -s hdfs://nameservice1:8020/flink-checkpoints/3d9ae1714b82adcc1b04eb7cd624c211/chk-4 -m yarn-cluster -p 4 -yjm 4096m -ytm 4096m -ynm MainFabWindowApplication -ys 2 -yqu q4rt MainFabFlinkJob.jar

get_checkpoint_dir.sh

monitor.sh

重启过程中遇到的问题:

脚本里的配置不对Please specify JAVA_HOME. Either in Flink config ./conf/flink-conf.yaml or as system-wide JAVA_HOME.

在flink-conf.yaml 需要加上JAVA_HOME

env.java.home: /usr/java/jdk1.8.0_144

如果觉得《shell脚本 flink job挂掉自动从上一个checkpoint重启》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。