You need to enable JavaScript to run this app.
导航
Shell
最近更新时间:2025.06.13 10:42:00首次发布时间:2022.06.23 18:24:58
我的收藏
有用
有用
无用
无用

DataLeap 提供 Shell 任务类型,可支持资源的引用、配置参数以及编辑 Shell 脚本来满足您的业务场景需求。本文将为您介绍 Shell 任务配置说明。

1 使用限制

  • 若仅开通 DataLeap 大数据集成服务版本,不支持创建 Shell 任务类型。服务版本说明详见DataLeap 公有云版本功能差异
  • Shell 任务访问私有网络服务或资源时,需通过独享计算资源组访问,Shell 任务界面不支持单独修改网络配置。
  • 任务执行设置中,若需通过自定义镜像方式来执行,则自定义镜像中须安装 python3,方可正常使用。
  • 在任务执行设置里,如果需要采用自定义镜像的方式来执行任务,则在自定义镜像中必须安装 python3,方可正常使用。
  • Shell 任务上游依赖设置时,不支持调度属性中的依赖推荐功能,仅能通过手动添加的方式,添加上游依赖关系。详见任务调度依赖
  • 任务执行设置中的 SSH 设置入口,目前处于白名单阶段,如需使用,您可通过提工单的方式,请联系我们进行开通使用。

2 前提条件

  • 子用户登录创建任务时,若手动选择网络环境,则需具备私有网络相关服务的使用权限。此时,需要主账号应在访问控制中,为子用户添加 VPCReadOnlyAccess 或 VPCFullAccess 权限。详见访问控制
  • 若要通过 Shell 任务访问远端 ECS 主机并执行 ECS 中的脚本时,您需要先配置 SSH 数据源。详见 配置 SSH 数据源

3 创建任务

  1. 登录 DataLeap租户控制台
  2. 在具体项目中进入数据开发界面,并单击新建任务按钮进行任务新建。
  3. 依次选择数据开发 > 通用 > Shell 任务类型。
  4. 填写任务基本信息,单击确定按钮,完成任务创建。

注意

任务名称信息仅允许字符.、字母、数字、下划线、连字符、[]、【】、()、()以及中文字符,且需要在127个字符以内。

Image

4 编辑使用

任务创建成功后,进入代码开发编辑界面。

4.1 开发代码编辑

  1. 支持语言:Shell Bash,如下所示:

    echo "Hello World !"
    
  2. 参数:支持时间参数 ${date}、${hour} 等,更多参数可参考:时间变量与常量说明

    echo ${date}
    

4.2 网络配置(可选)

当任务在脚本中访问公网、私有网络(VPC)资源,或者访问有存在网络访问限制的镜像仓库地址时,您需要进行网络配置,选择能够与您资源互通的私有网络、子网、安全组信息。
有以下两种方式:

  • 您可通过手动下拉的方式,选择访问任务资源、数据源所在的私有网络(VPC)、子网和安全组等网络信息。

    说明

    子用户登录创建任务时,若手动选择网络环境,则需具备私有网络相关服务的使用权限。此时,需要主账号应在访问控制中,为子用户添加 VPCReadOnlyAccess 或 VPCFullAccess 权限。详见访问控制

    Image
  • 亦或是当项目已绑定独享计算资源组时,您也可通过使用独享计算资源组来访问私有网络下的资源、服务,实现网络互通。
    Image
    可将独享计算资源组所在的 VPC 开通公网,或者使其 VPC 信息与您资源所在的 VPC 信息保持一致,若二者不一致时,您也可以通过 CEN 做网络打通工作。
    选择独享计算资源组后,此处网络配置信息均来源于独享计算资源组信息,暂不支持在网络配置界面直接修改,您可在创建独享计算资源组时,配置好对应的私有网络信息,详见:资源组管理

4.3 任务产出数据登记

产出数据登记用于记录任务的数据血缘,不会对代码逻辑造成影响。如果 Shell 任务中含有对应引擎库表数据的产出时,强烈建议填写,以便后续维护任务数据血缘关系。

  1. 引擎类型:根据实际情况选择产出的数据引擎类别,如 EMR(EMR Hadoop、EMR Doris、EMR StarRocks 引擎)、ByteHouse、EMR Serverless Spark、EMR Serverless StarRocks、默认(没有产出登记)等。
  2. 关联实例:选择关联对应引擎下的实例信息。
  3. 数据类型:对应引擎类型下选择产出的数据类型。
  4. 数据库表:选择对应引擎下产出的数据库和数据表详细名称信息。

4.4 执行设置

  1. 单击进入右侧侧边栏执行设置窗口。

  2. 选择计算资源组:支持选择公共计算资源组,独享计算资源组

  3. 镜像地址:

    • 支持您自定义镜像,建议使用火山引擎镜像仓库,dataleap-{region}.cr.volces.com/studio/spark:online, 其中 {region} 值,需根据实际情况替换为具体地域信息,如 cn-beijing、cn-shanghai、ch-guangzhou、ap-southeast-1。
      完整示例如,北京地域:dataleap-cn-beijing.cr.volces.com/studio/spark:online

      说明

      1. DataLeap 公共计算资源组无法访问公网,若您填写的镜像仓库地址(如第三方镜像仓库)需通过公网或指定私有网络(VPC)访问时,您需要通过上方4.2 网络配置(可选)来实现网络互通。可尝试以下解决方案:
        • 将您的镜像仓库地址和您配置的 VPC 地址均开通公网访问能力;
        • 您镜像仓库所在的 VPC 和您配置的 VPC 需保持一致,或是通过 CEN 做网络打通。
      2. 基础镜像地址中仅包含最基础的 Linux 和 Python 命令,简单场景下,您也可基于基础镜像地址,并额外补充一些依赖来使用。
        基础镜像地址:dataleap-{region}.cr.volces.com/studio/runtime_light:online,其中 {region} 值,需根据实际情况替换为具体地域信息,如 cn-beijing、cn-shanghai、ch-guangzhou、ap-southeast-1。
        完整示例如,北京地域:dataleap-cn-beijing.cr.volces.com/studio/runtime_light:online
      3. 若您自定义镜像的文件中有需加密的文件,希望该镜像文件只允许被固定任务使用,则您可以创建私有镜像类型,并将镜像仓库地址、用户名及密码等私有镜像配置信息,添加至独享计算资源组中,通过独享计算资源组来访问镜像文件。修改资源组镜像配置操作详见资源组管理
      4. 私有镜像地址需要您手动填写 OCI 制品仓库中,具体镜像版本对应的网络地址信息,以实际填写的镜像地址为准。若遗漏填写的情况下,会访问到默认的基础镜像地址。
    • DataLeap 额外提供了以下镜像地址,您可根据实际场景进行使用:

      镜像地址

      说明

      dataleap-cn-beijing.cr.volces.com/studio/datax:v1

      包含 DataX 工具集的公共镜像地址,您可使用该镜像地址,通过 Shell 任务,使用 DataX 的数据集成同步框架,创建各数据源间的通道任务,最佳实践案例详见:Shell 调用 DataX

      dataleap-cn-beijing.cr.volces.com/studio/mysql:0.0.1

      您可使用该镜像地址,通过 DataLeap 中的 Shell 节点任务,来访问或操作兼容 MySQL 协议的相关数据库表信息,如支持连接 MySQL 数据库表、火山引擎 E-MapReduce(EMR) Doris 数据库表等

  4. 资源配置:资源可根据实际需求进行配置,以 CU 为单位,默认配置 1CU(1CU = 1Core 4GB),下拉可选择更多规格的资源配置。

    说明

    其中 0.25CU、0.5CU 规格,仅独享计算资源组支持选择。

  5. 资源选择:
    Shell 任务支持在任务编辑中使用通用资源,通过访问 Jar、File、Zip 等资源类型,来提升数据开发效率。
    资源选择下拉框中,选取任务中所需使用到的资源,若还未创建资源,您也可单击新建资源按钮,前往资源库进行新建。新建资源操作详见资源库

  6. SSH 设置
    通过 Shell 任务绑定已创建的 SSH 数据源,并编辑 Shell 语句触发执行 ECS 主机上的脚本,从而实现在 DataLeap 中完成对远端 ECS 主机的访问及 ECS 中脚本的执行操作。
    选择数据源框中,下拉选择已在项目控制台中创建的 SSH 数据源信息。数据源创建操作详见配置 SSH 数据源

    说明

    此处 SSH 设置入口,目前处于白名单阶段,如需使用,您可通过提工单的方式,请联系我们进行开通使用。

4.5 任务模板

单击任务模板按钮,您可以选择是否通过任务模板方式,便捷快速的复用代码模板逻辑,在弹窗中选择使用 Shell 任务模板,并选择相应的版本号,输入替换的参数即可完成复用。
Image

注意

  1. 使用任务模板时,界面编辑器、以及执行设置中的镜像地址, 不支持再次编辑,若当前任务模板代码,不符合您当前业务场景逻辑,您可通过修改或新建任务模板,形成新版本的任务模板,来实现不同业务场景的复用。
  2. 修改模板时,需注意其他任务引用情况,操作说明详见:任务模板

5 后续操作

任务编辑完成后,您可按需配置节点的调度相关属性,并进行后续的保存、调试任务及提交发布操作操作。提交发布说明详见:数据开发概述---离线任务提交

注意

  • 调试操作,直接使用线上数据进行调试,需谨慎操作。
  • 本任务类型支持调试执行成功或失败后发送消息通知,您可根据业务情况,前往项目控制台 > 配置信息 > 消息通知设置中,选择是否开启任务调试运行成功失败通知。
    • 默认通知方式为邮箱,您需在“账号管理”中,提前绑定相应的安全邮箱信息;
    • 您也可根据业务需要,自行配置飞书应用机器人,通过飞书的方式发送消息通知,飞书消息通知前置操作详见1.1 飞书应用机器人创建

6 常见问题

Q1. 容器内执行时间与 DataLeap 日志采集时间不一致是什么原因?

Image

  • 问题现象:
    Shell 任务中存在执行 Java 脚本,并打印 Java 相关日志的场景,会出现日志中打印的时间与当前时间不一致的情况。
  • 问题原因及解决方案:
    Shell 任务执行容器内的默认环境为 0 时区,所以在打印容器内日志时,时间显示为 UTC+0 时区。您可以在 Shell 脚本中添加修改容器时区的命令,使容器内日志与 DataLeap 采集日志的时间保持一致。修改命令示例如下:timedatectl set-timezone “Asia/Shanghai”

Q2. 从其他平台迁移的任务,Shell 任务中网络信息为空,如何解决?

  • 问题现象:
    从其他平台迁移到 DataLeap 平台中的 Shell 任务,使用了独享计算资源组,但网络配置信息为空,导致无法正常执行。
  • 解决方案:
    任务迁移导致网络未关联,您可以在任务右侧执行设置 - 计算资源组中,切换下对应的独享计算资源组信息,再重新绑定后便可关联到资源组对应的网络信息,从而解决网络信息为空的问题。