当前位置: 首页 > news >正文

Flink 任务启动脚本-V2(包括ck启动)


#!/bin/bash#crontab时设置,如果依赖其他环境变量配置,可以在脚本执行一下环境变量脚本
source /etc/profile# 进入脚本目录
curdir=`dirname "$0"`
curdir=`cd "$curdir"; pwd`
echo "进入启动脚本目录 $curdir"# 定义应用程序名称
APP_NAME="orderTest"# 定义checkpoint路径
CHECKPOINT_BASE_PATH="hdfs:///jobs/flink/checkpoints/$APP_NAME/"MAIN_CLASS="com.test.mainTest"#绝对路径
JAR_PATH="/$curdir/flink-test-1.0.0.jar"# 默认从checkpoint启动
USE_CHECKPOINT=true# 显示使用说明
usage() {echo "用法: $0 [-n] [-h]"echo "选项:"echo "  -n    不从checkpoint启动任务(默认从最新的checkpoint启动)"echo "  -h    显示此帮助信息"echoecho "示例:"echo "  $0        # 从最新的checkpoint启动任务"echo "  $0 -n     # 不使用checkpoint启动任务"exit 1
}# 解析命令行参数
while getopts ":nh" opt; docase $opt inn)USE_CHECKPOINT=falseecho "已设置:不从checkpoint启动任务";;h)usage;;\?)echo "错误:无效的选项 -$OPTARG"echo "使用 -h 查看帮助信息"exit 1;;esac
done# 如果设置了无效参数,显示使用说明
if [ $OPTIND -gt 1 ]; thenshift $((OPTIND-1))if [ "$#" -gt 0 ]; thenecho "错误:存在额外的参数 $@"echo "使用 -h 查看帮助信息"exit 1fi
fi# 检查是否存在指定应用程序在运行中
is_running=$(yarn application -list | grep -w "$APP_NAME" | grep -c "RUNNING")if [ $is_running -gt 0 ]; thenecho "应用程序 $APP_NAME 在运行中,退出脚本"exit 1
elseecho "应用程序 $APP_NAME 不在运行中,准备拉起任务"
fi# 函数:获取最新成功的checkpoint地址
get_latest_checkpoint() {latest_checkpoint=$(hdfs dfs -ls -t -R $CHECKPOINT_BASE_PATH  | grep '_metadata' | sort -k6,7r | head -n 1 | awk '{print $8}'  )if [ -z "$latest_checkpoint" ]; thenreturn 1fi# 去掉文件名,只保留目录路径checkpoint_dir=$(dirname "$latest_checkpoint")echo $checkpoint_dirreturn 0
}# 构建基础命令
CMD="flink run \-t yarn-per-job \-d \-p 1 \-Dyarn.application.queue=realtime \-Dyarn.application.name=$APP_NAME \-Dtaskmanager.memory.process.size=4096mb \-Dtaskmanager.memory.network.max=64mb \-Dtaskmanager.memory.managed.size=1024mb \-Dtaskmanager.numberOfTaskSlots=1 \-c $MAIN_CLASS"if [ "$USE_CHECKPOINT" = true ]; then# 获取最新的checkpoint地址LATEST_CHECKPOINT=$(get_latest_checkpoint)if [ $? -ne 0 ]; thenecho "没有找到适合的ck,退出执行"exit 1fiecho "'$APP_NAME' 任务将从 '$LATEST_CHECKPOINT' 启动"CMD="$CMD \-s $LATEST_CHECKPOINT"
elseecho "'$APP_NAME' 任务将不从checkpoint启动"
fi# 添加最终的jar包和配置文件参数
CMD="$CMD \$JAR_PATH "# 执行命令
echo " 任务启动命令: '$CMD' "eval $CMD

本次新增一个不从 ck 启动的选择,默认从 最新 ck 启动,用法 sh start.sh -n 。

备注:由于Flink checkpoint 个别情况下,不一定能保证落地的checkpoint文件一定有效,所以需要人工介入支持。

http://www.lryc.cn/news/493159.html

相关文章:

  • 扫雷-完整源码(C语言实现)
  • python -从文件夹批量提取pdf文章的第n页,并存储起来
  • R Excel 文件操作指南
  • RabbitMQ 安装延迟队列插件 rabbitmq_delayed_message_exchange
  • fatal error in include chain (rtthread.h):rtconfig.h file not found
  • Java 反射(Reflection)
  • Python爬取机车网车型数据并存入Mysql数据库
  • fpga 时序分析基础
  • python学习——二维列表的列表生成式
  • 【错误❌】——槽函数定义好但未初始化
  • OpenCV相机标定与3D重建(6)将3D物体点投影到2D图像平面上函数projectPoints()的使用
  • 【Linux】剧幕中的灵魂更迭:探索Shell下的程序替换
  • 38 基于单片机的宠物喂食(ESP8266、红外、电机)
  • Unity中的数学应用 之 角色移动中单位化向量的妙用 (小学难度)
  • 设置ip和代理DNS的WindowsBat脚本怎么写?
  • 字符串分割转换(Java Python JS C++ C )
  • 【Maven】项目创建
  • number的++和--运算 C#
  • 浅谈网络 | 应用层之HTTPS协议
  • 2、Three.js初步认识场景Scene、相机Camera、渲染器Renderer三要素
  • Deepwave 声波正演和弹性波正演
  • 【WRF-Urban】多层建筑能源参数化模型概述:原理
  • 基于Qt实现的自定义树结构容器:设计与应用
  • 网络命令Linux
  • 简单的Activiti Modoler 流程在线编辑器
  • 【NodeJS】Express写接口的整体流程
  • Oracle 锁表的解决方法及避免锁表问题的最佳实践
  • 关于 vue+element 日期时间选择器 限制只能选当天以及30天之前的日期
  • 租辆酷车小程序开发(二)—— 接入微服务GRPC
  • 如何在 Ubuntu 22.04 上安装 Metabase 数据可视化分析工具