flink

发布于 更新于

AI总结: 本文介绍了两个 Bash 脚本,run_job.sh 和 cancel_job.sh,分别用于提交和取消 Flink 作业。run_job.sh 脚本接收一个 JAR 文件路径和可选参数,提交作业到集群并提取 JobID,保存到 job_id.tmp 文件中。cancel_job.sh 脚本检查 job_id.tmp 文件是否存在,如果存在则取消对应的作业并删除该文件,否则提示用户先运行 run_job.sh。执行部分展示了如何运行这两个脚本。文本中没有明显的错误观点。

run_job.sh

#!/usr/bin/env bash  
# run_job.sh  <jar路径>  [可选参数...]  
set -euo pipefail  

JAR="$1"  
shift          # 其余参数作为作业参数  

# 1) 发送作业到集群,并把 JOB_ID 提出来  
JOB_JSON=$(./bin/flink run -d "$@" "$JAR" 2>&1 | tee /tmp/run_job.log)  

# 2) 抓取 JobID(正则匹配)  
JOB_ID=$(echo "$JOB_JSON" | grep -oP '(?<=Job has been submitted with JobID )\K[A-Fa-f0-9]+')  

echo "JobID = $JOB_ID"  
echo "$JOB_ID" > job_id.tmp          # 保存到文件  

cancel_job.sh

#!/usr/bin/env bash  
# cancel_job.sh  
set -euo pipefail  

JOB_ID_FILE="job_id.tmp"  

if [[ ! -f "$JOB_ID_FILE" ]]; then  
    echo "❌ 文件 $JOB_ID_FILE 不存在,请先运行 run_job.sh"  
    exit 1  
fi  

JOB_ID=$(cat "$JOB_ID_FILE")  
echo "取消任务: $JOB_ID"  

if bin/flink cancel "$JOB_ID"; then  
    rm -f "$JOB_ID_FILE"  
    echo "已删除 $JOB_ID_FILE"  
else  
    echo "取消失败,文件保留以便人工处理"  
fi  

执行

sh -v run_job.sh examples/flink-demo.jar -c com.flink.job.ToDoris  

sh cancel_job.sh