dolphinschduler调度时一直让输入密码问题

在使用过程中主要会遇到以下问题:

依赖关系配置问题、执行脚本调度问题(一直让输入密码、显示路径不存在)、定时器调度问题。

1 依赖关系问题

我们将事实表计算任务、维度表计算任务、cube构建任务用线条指定依赖关系,然后运行调度,发现和我们预想的不一致。

通过观察树形图发现,依赖关系和我们想的确实不一样。实际执行依赖关系是和树形图一致的。

所以,在指定依赖关系的时候,以树形图为标准

具体措施

在两个依赖的任务中间添加一个简单的任务,保存之后观察树形图,发现树形图改变,然后再删除添加的任务,保存依赖关系,发现正常了

猜想原因:可能依赖信息没保存成功

2 调度执行问题

错误脚本执行
su - hive -s /bin/bash headmasterreport/HeadmasterReportDimensionTable.sh

正确脚本执行
sudo -u hive /bin/bash $PWD/headmasterreport/HeadmasterReportDimensionTable.sh $PWD

调度过程

首先会使用当前工作流所属租户,将所需要的的脚本和jar包下载到临时工作目录。dolphin租户会创建一个.command文件来执行我们的脚本

sudo -u dolphin sh 临时工作目录/.command文件

在执行这个命令的时候,一直提示输入密码,各种密码都尝试了,发现还是su识别错误

疑惑:已经配置dolphin免密登录,为何还让输入密码?

错误原因

  1. 在执行命令的时候,需要执行 su - hive -s 来切换用户,可是当前执行用户为dolphin,su命令只有root用户能够执行,所以密码怎么输都不对
  2. 修改切换用户方式,由于我们配置了dolphin用户的sudo免密登录,所以可以使用sudo命令
  3. su - hive -s 改为 sudo -u hive

还会报找不到文件错误

原因是:在linux中执行脚本的时候,相对路径不生效,必须写绝对路径

解决方案:

  1. 由于,安装的环境是单机的,我们将脚本和jar包放在所在机器节点,将路径写死,不上传到调度器了,这样就可以了,但考虑到以后是集群部署,总不能每台节点都上传吧,所以使用第二种
  2. 我想他在执行 sudo -u dolphin sh 临时工作目录/.command文件的时候应该所在路径是临时工作目录,我可以用$PWD获取临时工作路径
  3. 除了脚本之外,脚本中的jar包路径也应该动态获取,所以在脚本外界传入路径,脚本内部取一下
    $PWD/headmasterreport/HeadmasterReportDimensionTable.sh $PWD

3 定时器设置问题

定时设置(一天执行一次)
dolphinschduler调度时一直让输入密码问题

秒、分设置为具体数值0,时设置为1点开始,每隔23小时执行,天、月、年都是默认每一?

假设从5时开始,每隔10小时执行,则在15时执行,25时已经是第二天,不执行,因为第二天也是从5时开始

总结:

如果按小时调度,请将秒和分置为具体数值0,设置时从几点开始,每隔几小时执行。

注意:
调度时直接点定时器上线就行,不用点工作流运行。

假如定时器下一次调度时间为今天15时,当前时间为12时,我们如果点工作流运行,就会调度两次12时和15时,但我们的本意是一天调度一次,两次可能会有数据上的错误

该问题均为实际使用中遇到的问题,由于是事后总结,未收集错误信息截图,还请见谅!