普元数据开发平台 普元数据开发平台
产品介绍
安装部署
快速入门
操作指南
应用集成
运维指南
  • SHELL 程序
  • 说明
  • 前置准备(可选)
  • 配置项说明
  • 关键特性与使用技巧
  • FAQ

# SHELL 程序

  • 说明
  • 配置项说明
  • 使用示例
    • 简单打印一行文字
    • 使用自定义参数
  • FAQ

# 说明

Shell 程序是 DolphinScheduler 中最通用、最灵活的任务类型(可运行任意 Shell 命令 / 脚本,包括封装 spark-submit/flink run 等)。

worker 执行该任务的时候,会生成一个临时 shell 脚本,并使用与租户同名的 linux 用户执行这个脚本。

  • 支持单行命令、多行脚本、引用外部脚本文件;
  • 可结合 DolphinScheduler 的参数体系(全局 / 项目 / 工作流 / 任务参数)实现动态逻辑;
  • 支持失败重试、超时控制、资源依赖等高级特性;
  • 执行结果以「命令退出码」判定:0 表示成功,非 0 表示失败。

# 前置准备(可选)

  • 脚本文件管理:若执行外部脚本,建议将脚本上传到 DolphinScheduler 「资源中心」(推荐),或确保 Worker 节点本地路径有该脚本且有执行权限;
  • 权限配置:DolphinScheduler 租户用户(如 hadoop)需对脚本 / 执行目录有「读 / 执行」权限;
  • 环境变量:如需使用自定义环境变量(如 JAVA_HOME、HADOOP_HOME),需在 bin/env/dolphinscheduler_env.sh 中配置并重启 Worker。

# 配置项说明

1. 基础环境配置(必选)

配置项 默认值 描述
脚本 - 在线直接编写 Shell 代码(适合短脚本 / 单命令)。

脚本内容支持 3 种配置方式,按需选择:

方式 1:单行命令(简单场景)

直接填写单行 Shell 命令,示例:

hive -e "use ods; select count(*) from user_info where dt='${sys.date}';"

方式 2:多行脚本(复杂逻辑)

填写多行 Shell 脚本,支持条件判断、循环等,示例:

#!/bin/bash
# 定义本地变量
today=${sys.date}
# 创建临时目录
mkdir -p /tmp/ds_shell_${today}
# 执行 HDFS 操作
hdfs dfs -mkdir -p /user/ds/ods/user_info/dt=${today}
# 执行失败则退出(非 0 码)
if [ $? -ne 0 ]; then
  echo "HDFS 目录创建失败"
  exit 1
fi
echo "任务执行成功"
exit 0

2. 运行控制配置(可选)

这类配置决定 Shell 程序在 DolphinScheduler 内的运行规则,属于调度层面的配置。在「通用配置」中进行配置。

配置项 默认值 描述
任务优先级 MEDIUM worker 线程数不足时,根据优先级从高到低依次执行,优先级一样时根据先进先出原则执行。
Worker 分组 default 任务分配给 worker 组的机器执行,选择 Default,会随机选择一台 worker 机器执行。
任务组 - 用于控制任务实例并发,选择项目中已经定义好的任务组。
任务组优先级 0 任务在任务组内运行的优先级,数字越大优先级越高。
环境名称 - 运行程序时指定的虚拟环境。
本地参数 - 是程序局部的用户自定义参数,会替换程序中以 ${变量} 的内容。
失败重试次数 0 任务失败后的重试次数,单位:次。
失败重试间隔 1 多次重试之间的等待时间,单位:分钟。
超时告警 关闭 勾选超时告警、超时失败,当任务超过”超时时长”后,会发送告警邮件并且任务执行失败。

# 关键特性与使用技巧

  1. 参数引用规则
    • 系统内置变量:直接引用 ${sys.date}(当前日期)、${sys.datetime}(当前时间)、${task.id}(任务 ID)等;
    • 自定义参数:任务 / 工作流 / 项目 / 全局参数,优先级:任务参数 > 工作流参数 > 项目参数 > 全局参数;
    • 变量传递:多行脚本中引用参数需用 ${参数名},示例:
    # 引用自定义参数 biz_date
    echo "当前处理日期:${biz_date}" 
    
  2. 执行权限与路径 脚本默认在 Worker 节点的 ${DOLPHINSCHEDULER_WORKER_LOG_PATH}/tasks/script/ 目录下执行; 执行用户需与 DolphinScheduler 租户配置一致(避免权限不足); 建议脚本中使用绝对路径(如 /usr/bin/hive 而非 hive),避免环境变量问题。
  3. 日志与调试 任务执行日志:点击任务「日志」标签,可查看完整的 Shell 输出(包括 stdout 和 stderr); 调试技巧:在脚本中增加 set -x(开启调试模式)或 echo 命令输出关键变量,示例:
set -x  # 打印所有执行的命令
echo "HIVE_DB: ${hive_db}"
hive -e "use ${hive_db}; show tables;"
set +x  # 关闭调试模式 

# FAQ

  1. 任务报「权限拒绝」

原因:执行用户对脚本 / 目录无执行权限;

解决:给脚本添加执行权限(chmod +x script.sh),或修改 DolphinScheduler 租户用户。

  1. 参数引用失效

原因:参数名拼写错误、优先级覆盖、脚本中未用 ${} 包裹;

解决:检查参数名,在脚本中增加 echo ${参数名} 调试,确认参数值是否正确。

  1. 脚本执行超时

原因:任务逻辑耗时过长、资源不足;

解决:调整「超时时间」,优化脚本逻辑(如拆分任务),增加 Worker 节点资源。

  1. 资源中心脚本找不到

原因:未勾选资源、资源路径错误;

解决:确认「资源」配置中勾选了脚本,使用 ${BASE_DIR} 引用脚本路径。

← SQL程序 Seatunnel程序 →