栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

shell脚本, flink job挂掉自动从checkpoint重启

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

shell脚本, flink job挂掉自动从checkpoint重启

场景

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

脚本实现主要功能

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

shell脚本 github地址

     https://github.com/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

重启过程中遇到的问题:

  1. 脚本里的配置不对
  2. 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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/976121.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号