在火山引擎 EMR 上执行 Dolphin Serverless 任务时,当前支持输出任务的 JobID,便于下游节点获取。本文为您介绍如何向下游输出 Dolphin Serverless 任务的 JobID。
部分业务场景需要对运行的 Serverless 任务做一些信息收集,方便做数据关联(升级为血缘),此时获取到 Serverless 任务节点运行的 Serverless JobID。在 Dolphin 的设计下,具备通过自定义变量的形式(OUT),使得上游节点将某些参数保存在工作流上下文中,使得下游节点运行时可以获取。因此,对于 Serverless 任务节点,运行完毕后通过将 Serverless 任务 ID 输出到上下文中,来达到下游获取任务 ID 做信息收集的目的。
# 替换为上述下载包 unzip serverless-plugin.zip # 替换为实际dolphin用户目录 chown -R dolphinscheduler:dolphinscheduler serverless-plugin # 替换为实际的dolphin_scheduler master-server路径 cp -rp serverless-plugin/. /usr/lib/emr/current/dolphin_scheduler/master-server/libs
# 替换为上述下载包 unzip serverless-plugin.zip # 替换为实际dolphin用户目录 chown -R dolphinscheduler:dolphinscheduler serverless-plugin # 替换为实际的dolphin_scheduler worker-server路径 cp -rp serverless-plugin/. /usr/lib/emr/current/dolphin_scheduler/worker-server/libs
# 下载包 unzip serverless-plugin.zip # 替换为实际dolphin用户目录 chown -R dolphinscheduler:dolphinscheduler serverless-plugin # 替换为实际的dolphin_scheduler api-server路径 cp -rp serverless-plugin/. /usr/lib/emr/current/dolphin_scheduler/api-server/libs # 先对原始 ui 产物做备份 mv /usr/lib/emr/current/dolphin_scheduler/api-server/ui /usr/lib/emr/current/dolphin_scheduler/api-server/ui-bak # 放入 serverless 提供的 ui mv serverless-plugin/ui /usr/lib/emr/current/dolphin_scheduler/api-server/ui
完成上述准备工作后,您可通过以下方式输出当前 Serverless 任务节点的 Job ID。
${emr_serverless_job_id},当该节点运行成功后,参数值会被替换为对应的 Serverless JobID工作流运行完毕后,在 EMR Serverless 控制台可以看到当前任务的 JobID。
同时,您可以在工作流下游的 shell 节点日志中可以看到上游 Serverless 任务的JobID。
Serverless Query SDK 可以通过 Job ID 获取任务信息,日志,Tracking Url 信息,使用文档参考:Java Query SDK。