#!/bin/bash
# 参数说明
if [ $# == 1 ] || [ "$1" == "-h" ]; then
echo "*****************************"
echo "* 参数说明: *"
echo "* -cn <class_name> *"
echo "* -jp <jar_path> *"
echo "* [-q <queue>] *"
echo "* [-pa <parallelism>] *"
echo "* [-jm <jobmanager>] *"
echo "* [-tm <taskmanager>] *"
echo "* [-ts <slots>] *"
echo "* [-u <udf>] *"
echo "*****************************"
exit 0
fi
# 默认配置
flink_home=$(whereis bin/flink | cut -d ' ' -f 2-)
class_name=""
jar_path=""
application_name="flink"
queue="root.users.root"
parallelism_default=4
jobmanager_memory="2048mb"
taskmanager_memory="4056mb"
taskmanager_slots=2
env_java_opts="-Dfile.encoding=UTF-8"
# 遍历所有参数进行匹配
while [[ "$#" -gt 0 ]]; do
case $1 in
-cn|--class_name)
class_name=$2
shift ;;
-jp|--jar_path)
jar_path=$2
shift ;;
-q|--queue)
queue=$2
shift ;;
-pa|--parallelism)
parallelism_default=$2
shift ;;
-jm|--jobmanager)
jobmanager_memory=$2
shift ;;
-tm|--taskmanager)
taskmanager_memory=$2
shift ;;
-ts|--slots)
taskmanager_slots=$2
shift ;;
-u|-U|--UTF|--udf)
env_java_opts=$2
shift ;;
esac
shift
done
# Flink参数设置
flink_command="$flink_home run -t yarn-per-job -Dyarn.application.name=${class_name##*.} -Dyarn.application.queue=$queue -Dparallelism.default=$parallelism_default -Djobmanager.memory.process.size=$jobmanager_memory -Dtaskmanager.memory.process.size=$taskmanager_memory -Dtaskmanager.numberOfTaskSlots=$taskmanager_slots -Denv.java.opts=$env_java_opts -c $class_name $jar_path"
# 检查必要参数是否存在
if [ -z "$class_name" ] || [ -z "$jar_path" ]; then
echo "*****************************************************"
echo "* 传参错误: *"
echo "* *"
echo "* 请传入必要的全类名[-cn ]和jar包路径[-jp ]作为参数 *"
echo "*****************************************************"
exit 1
fi
# 启动Flink的per-job模式
echo "export HADOOP_CLASSPATH=\`hadoop classpath\`"
eval "$flink_command"
flink的per-job模式自定义脚本
于 2023-08-02 17:22:40 首次发布