1.问题描述
flink同步任务,长期任务过多,某个任务停止保存checkpoint或者savepoint后,修改代码,使用命令行读取检查点重新启动需要人工去hdfs上找寻检查点保存位置。任务过多管理起来很不方便。
鉴于此,使用脚本编写了一套启停代码,可以自动的停止flink任务并保存savepoint,读取检查点启动,也可以实现批量的启停
废话不多说,脚本如下
2.问题解决
vim flink_task_start_and_stop.sh
#!/bin/bash
# HDFS配置
HDFS_URI=hdfs://mycluster
# 读取最新的checkpoint文件夹名
function get_latest_checkpoint_dir {
# 获取所有的checkpoint文件夹名
dirs=($(hdfs dfs -ls $CHECKPOINT_DIR | sort -r -k6,7 | awk '{print $NF}'))
# 遍历文件夹名
for dir in "${dirs[@]}"; do
# 获取最新的以chk开头的savepoint文件夹名
chk_dir=$(hdfs dfs -ls $dir | awk '{print $NF}' | grep -w '.*/savepoint-.*' | sort -r | head -n 1)
if [ ! -z "$chk_dir" ]; then
echo "$chk_dir"
return