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

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

1 使用限制

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

2 前提条件

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

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-cn-beijing.cr.volces.com/studio/spark:online
      • 上海地域:dataleap-cn-shanghai.cr.volces.com/studio/spark:online
      • 广州地域:dataleap-cn-guangzhou.cr.volces.com/studio/spark:online

      说明

      1. DataLeap 公共计算资源组无法访问公网,若您填写的镜像仓库地址(如第三方镜像仓库)需通过公网或指定私有网络(VPC)访问时,您需要通过上方4.2 网络配置(可选)来实现网络互通。可尝试以下解决方案:
        • 将您的镜像仓库地址和您配置的 VPC 地址均开通公网访问能力;
        • 您镜像仓库所在的 VPC 和您配置的 VPC 需保持一致,或是通过 CEN 做网络打通。
      2. 基础镜像地址中仅包含最基础的 Linux 和 Python 命令,简单场景下,您也可基于基础镜像地址,并额外补充一些依赖来使用。
        基础镜像地址:
        • 北京地域:dataleap-cn-beijing.cr.volces.com/studio/runtime_light:online
        • 上海地域:dataleap-cn-shanghai.cr.volces.com/studio/runtime_light:online
        • 广州地域:dataleap-cn-guangzhou.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 等资源类型,来提升数据开发效率。
    资源选择下拉框中,选取任务中所需使用到的资源,若还未创建资源,您也可单击新建资源按钮,前往资源库进行新建。新建资源操作详见资源库

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”