Pentaho并行作业Spoon运行正常,bat执行启动后无后续输出求助
Pentaho并行作业通过Kitchen.bat执行停滞问题排查思路
我有一个包含5个并行子作业(Test1至Test5)的Pentaho作业,在Spoon图形界面中运行完全正常,但通过bat脚本调用Kitchen.bat执行时,日志显示成功启动所有并行子作业后就停止输出,作业陷入停滞状态。
我的bat脚本:
@echo off call D:\Pentaho\Kitchen.bat /rep:git1 /dir:TestCase/Samples/example /job:Job_1 "/param:ENV=PROD" "/param:SOURCE=MAIN" "/param:path= D:\GIT_TESTS\pentaho\xlsx\MAIN" >> "D:\GIT _TESTS\ pentaho\xlsx\Logs\log_Job_1.log" EXIT @echo on
关键执行日志片段:
2022/11/04 22:31:01 - Job_1 - Starting entry [Test1] 2022/11/04 22:31:01 - Job_1 - Launched job entry [Test1] in parallel. 2022/11/04 22:31:01 - Job_1 - Starting entry [Test2] 2022/11/04 22:31:01 - Job_1 - Launched job entry [Test2] in parallel. 2022/11/04 22:31:01 - Job_1 - Starting entry [Test3] 2022/11/04 22:31:01 - Job_1 - Launched job entry [Test3] in parallel. 2022/11/04 22:31:01 - Job_1 - Starting entry [Test4] 2022/11/04 22:31:01 - Job_1 - Launched job entry [Test4] in parallel. 2022/11/04 22:31:01 - Job_1 - Starting entry [Test5] 2022/11/04 22:31:01 - Job_1 - Launched job entry [Test5] in parallel.
排查解决思路:
开启详细日志定位子作业状态
Kitchen.bat默认只输出主作业日志,子作业的执行细节不会显示。修改脚本添加-level:DEBUG参数,强制输出全量日志,就能看到子作业是在运行还是卡在某个节点:call D:\Pentaho\Kitchen.bat /rep:git1 /dir:TestCase/Samples/example /job:Job_1 "/param:ENV=PROD" "/param:SOURCE=MAIN" "/param:path=D:\GIT_TESTS\pentaho\xlsx\MAIN" -level:DEBUG >> "D:\GIT _TESTS\ pentaho\xlsx\Logs\log_Job_1.log"修正环境变量与路径问题
Spoon和命令行的运行上下文存在差异,容易导致配置或路径异常:- 手动指定
KETTLE_HOME:脚本中当前-DKETTLE_HOME=是空的,添加用户的Kettle配置目录(比如-DKETTLE_HOME=C:\Users\USR_TST\.kettle),确保子作业能读取正确的数据库连接配置。 - 清理路径参数空格:原脚本中
path参数值开头有空格(path= D:\...),虽然日志里显示被自动移除,但可能引发解析问题,直接改为"/param:path=D:\GIT_TESTS\pentaho\xlsx\MAIN"。 - 切换工作目录:在调用Kitchen.bat前添加
cd D:\Pentaho,确保作业依赖的相对路径能正确识别。
- 手动指定
调整资源限制
5个并行作业同时运行可能耗尽JVM或系统资源:- 增大JVM内存:当前
-Xmx4096m是4G,可尝试提升到-Xmx8192m,同时将Java 8已废弃的MaxPermSize改为-XX:MaxMetaspaceSize=512m,直接在脚本中指定参数:call D:\Pentaho\Kitchen.bat /rep:git1 /dir:TestCase/Samples/example /job:Job_1 "/param:ENV=PROD" "/param:SOURCE=MAIN" "/param:path=D:\GIT_TESTS\pentaho\xlsx\MAIN" "-Xmx8192m" "-XX:MaxMetaspaceSize=512m" >> "D:\GIT _TESTS\ pentaho\xlsx\Logs\log_Job_1.log" - 监控系统资源:打开任务管理器查看CPU、内存、磁盘IO占用,确认是否有资源瓶颈导致作业停滞。
- 增大JVM内存:当前
排查子作业的非交互逻辑
命令行环境不支持图形交互,子作业中如果有依赖界面的步骤会直接卡住:- 确保所有数据库连接都通过配置文件或参数传递密码,没有弹窗输入的情况。
- 检查子作业是否包含需要用户确认的弹窗步骤,替换为非交互的自动处理逻辑。
单独测试子作业
用Kitchen.bat单独运行每个Test子作业,确认是否能正常完成:call D:\Pentaho\Kitchen.bat /rep:git1 /dir:TestCase/Samples/example /job:Test1 "/param:ENV=PROD" "/param:SOURCE=MAIN" "/param:path=D:\GIT_TESTS\pentaho\xlsx\MAIN" >> "D:\GIT _TESTS\ pentaho\xlsx\Logs\log_Test1.log"如果某个子作业单独运行也卡住,说明问题出在该子作业本身,和并行逻辑无关。
内容的提问来源于stack exchange,提问作者Jan Pietruszka
相关产品推荐
相关产品推荐

