Apache DolphinScheduler Linkis 任务节点实战指南:基于 linkis-cli 的引擎作业提交、状态跟踪与配置详解 📅 发布时间:2026/9/15 16:10:41 👁 浏览次数: Apache DolphinScheduler Linkis 任务节点实战指南基于 linkis-cli 的引擎作业提交、状态跟踪与配置详解【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler本篇技术指南围绕 Apache DolphinScheduler 的Linkis 任务类型展开讲解如何在工作流中创建、配置并运行 Apache Linkis 任务并结合仓库源码剖析linkis-cli命令的构建、异步提交、状态轮询与取消的完整实现原理。读完本文你将掌握在 DolphinScheduler 中接入 Linkis、以 Spark 等引擎执行 SQL 脚本的端到端配置方法以及底层任务执行链路的运行机制。概述Linkis 任务类型如何工作LinkisApache Linkis是上层应用与底层计算引擎之间的计算中间件提供 Spark、Hive、Flink 等引擎的统一接入能力。DolphinScheduler 通过内置的Linkis 任务类型让工作流中的任务节点可以直接向 Linkis 提交计算作业。当 Worker 执行该任务时会通过linkis-cli命令行工具解析并执行任务参数——即 Worker 底层实际上是以 Shell 命令的方式调用 Linkis 提供的 CLI 客户端把任务参数拼装成一条linkis-cli命令并在 Worker 所在机器上执行。对应实现位于任务插件 LinkisTask.java它继承自AbstractRemoteTask具备「提交—跟踪—取消」三段式的远程任务生命周期管理能力。在插件注册层面LinkisTaskChannelFactory.java 通过AutoService(TaskChannelFactory.class)将任务类型名注册为LINKIS由 LinkisTaskChannel.java 负责把任务参数 JSON 解析为LinkisParameters并创建LinkisTask实例。创建 Linkis 任务节点在 DolphinScheduler 前端页面中创建 Linkis 任务的步骤如下进入项目管理 → 项目名称 → 工作流定义点击「创建工作流」按钮进入 DAG 编辑页面从左侧工具栏拖拽LINKIS图标对应 UI 组件 use-linkis.ts 中的taskType: LINKIS到画布上即可生成一个 Linkis 任务节点。在 DAG 编辑页中Linkis 节点表单由 use-linkis.ts 渲染除通用任务字段外还包含以下 Linkis 特有配置表单字段类型说明自定义配置useCustom开关开启后使用脚本编辑器直接编写完整linkis-cli参数关闭后以键值对形式逐条填写参数参数选项paramScript键值对列表每一行包含prop参数名如-engineType与value参数值最终按「参数名 空格 参数值」的顺序拼接脚本rawScript编辑器仅当开启「自定义配置」时显示直接编写参数内容任务参数Linkis 任务节点的参数由两部分组成DolphinScheduler 通用默认参数节点名称、运行标志、描述、任务优先级、Worker 分组、任务组、环境名称、失败重试次数、失败重试间隔、CPU 配额、最大内存、超时告警、延时执行时间、资源、前置任务等详见 DolphinScheduler Task Parameters Appendix 中的Default Task Parameters一节。CPU 配额与最大内存的生效前提可参考 configuration.md 中task.resource.limit.state相关说明。Linkis 专属参数即 Linkis CLI 支持的任务参数如引擎类型、代码类型、提交用户等按上文「自定义配置」或「参数选项」两种方式填写。从源码看Linkis 任务的参数模型定义在 LinkisParameters.java包含三个核心字段useCustomBoolean是否使用自定义脚本模式paramScriptListParam参数选项列表Param由props参数名与value参数值组成rawScriptString自定义脚本内容。其checkParameters()校验逻辑为useCustom为真时必须填写非空rawScriptuseCustom为假时paramScript列表必须非空否则初始化会抛出Linkis task params is not valid异常见 LinkisTask.java 的init()方法。任务示例使用 Spark 引擎执行 SQL 脚本以下示例演示如何通过 Linkis 任务使用 Spark 引擎执行一条 SQL 查询。配置 DolphinScheduler 中的 Linkis 环境如果要在生产环境中使用 Linkis 任务类型需要先配置所需的环境。配置文件位于部署实例中的/dolphinscheduler/conf/env/dolphinscheduler_env.sh。需要在该文件中设置LINKIS_HOME环境变量使其指向 Linkis 安装目录——这一点可以从常量定义 Constants.java 中SHELL_CLI_OPTIONS ${LINKIS_HOME}/bin/linkis-cli得到印证Worker 实际执行的linkis-cli客户端正是通过该环境变量定位的。配置 Linkis 任务节点根据上文的任务参数说明在任务节点上配置所需内容在「自定义配置」关闭的情况下以键值对形式添加-engineType、-codeType、-code、-submitUser、-proxyUser等参数或在开启「自定义配置」后将参数内容直接写入脚本编辑器。Config 示例任务参数的等价linkis-cli命令行示例如下sh ./bin/linkis-cli -engineType spark-2.4.3 -codeType sql -code select count(*) from testdb.test; -submitUser hadoop -proxyUser hadoop各参数含义如下参数含义-engineType指定计算引擎类型如spark-2.4.3-codeType指定代码类型如sql-code实际执行的代码内容如 SQL 语句-submitUser提交任务使用的用户-proxyUser任务实际代理执行的用户命令构建的源码视角linkis-cli命令在运行时由 LinkisTask.java 的buildOptions()方法拼装无论哪种配置模式命令开头都会固定追加Constants.SHELL_CLI_OPTIONS即${LINKIS_HOME}/bin/linkis-cli和Constants.ASYNC_OPTIONS即--async true随后根据模式追加内容useCustomtrue直接追加rawScript原文useCustomfalse遍历paramScript按「props 空格 value」顺序逐项拼接buildParamConfigContent()方法。LinkisTaskTest.java 中的testBuildLinkisExecuteCommand用例验证了这一拼接逻辑例如参数项-engineType spark-2.4.3会生成sh ./bin/shell-cli -engineType spark-2.4.3形式的命令。提交、状态跟踪与取消机制Linkis 任务属于远程提交型任务Worker 并不直接运行计算作业而是通过linkis-cli提交给 Linkis 服务端后异步跟踪结果异步提交submitApplication()通过ShellCommandExecutor执行拼接好的命令并从命令输出中利用正则taskID: \d提取 Linkis 返回的任务 IDfindTaskId()将其作为应用 ID 保存随后任务即进入跟踪阶段。状态跟踪trackApplicationStatus()周期执行${LINKIS_HOME}/bin/linkis-cli --status taskId从输出中匹配status: \w得到作业状态字符串再通过 LinkisJobStatus.java 的convertFromJobStatusString()完成状态映射Succeed置为成功、Failed置为失败、Cancelled置为终止Kill而Running、Scheduled、Inited等中间状态不修改退出码任务会持续轮询等待。取消任务cancelApplication()执行${LINKIS_HOME}/bin/linkis-cli --kill taskId主动终止 Linkis 端作业。LinkisJobStatus枚举完整定义了 Linkis 作业的全生命周期状态包括Unsubmitted、Submitting、Inited、WaitForRetry、Scheduled、Running、Succeed、Failed、Cancelled、Timeout、Unknown、Shuttingdown共 12 种便于在调试时对照判断作业所处阶段。注意事项无需在配置列中填写sh ./bin/linkis-cli该命令前缀已通过Constants.SHELL_CLI_OPTIONS在源码中预先配置依赖LINKIS_HOME环境变量重复填写反而可能导致命令非法任务默认采用异步提交方式无需再配置--async参数Constants.ASYNC_OPTIONS会在命令构建时自动附加若启用「自定义配置」模式请确保rawScript中的参数书写格式与linkis-cli官方要求一致如-engineType、-codeType等插件会原样拼接为命令行。总结本文完整覆盖了 DolphinScheduler Linkis 任务节点的创建、参数配置与运行示例并深入到 dolphinscheduler-task-linkis 插件内部说明了linkis-cli命令的自动拼装、任务 ID 解析、状态枚举映射以及 kill/status 轮询等实现细节。结合 任务参数附录 与插件源码开发者可以快速在生产环境接入 Linkis并通过 Spark、Hive 等引擎在工作流中编排 SQL 等计算作业。【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考