You need to enable JavaScript to run this app.
导航

开发 Spark JAR 任务

最近更新时间2023.11.02 11:20:56

首次发布时间2022.11.11 18:00:44

您可以自行编写业务应用程序并构建 JAR 包,将业务 JAR 包上传后即可创建 Spark JAR 任务,流程简单。本文通过一个简单示例,介绍如何开发 JAR 任务。

前提条件

  • 您在体验任务开发流程前,请确保您已被添加为项目成员并获得项目相关授权,请参见添加项目成员
  • 主账号或项目负责人已经在项目内创建好 Spark 资源池,请参见创建资源池
  • 提前完成业务应用程序开发,并构建好 JAR 包。JAR 包文件名称要符合控制台要求,只能由大小写字母、数字、下划线(_)、短横线(-)和英文句号(.)组成。

开发流程

图片
本文将 Spark JAR 任务开发流程总体分为了三个阶段,分别是开发阶段和运维阶段,每个阶段对应的成员及主要工作均不相同。

  • 开发阶段:一般是项目开发成员负责开发和上线 JAR 任务。
  • 运维阶段:一般是项目运维成员负责启动任务,并查看任务运行情况。

步骤一:上传JAR包

Spark 控制台提供了 JAR 包资源统一管理的功能,您在体验开发 JAR 任务前,需要提前将 JAR 包上传到控制台。

  1. 登录批式计算 Spark 版控制台

  2. 在顶部菜单栏选择目标地域。

  3. 在左侧导航栏选择项目管理,在搜索框中根据项目名称进行模糊搜索,然后单击项目区块进入项目。

  4. 在项目左侧导航栏选择任务开发 > Jupyter lab,单击资源库栏目,然后单击添加按钮。
    图片

  5. 创建资源对话框,设置资源名称,上传 JAR 包,然后单击确定
    图片

    配置

    说明

    资源名称

    自定义设置 JAR 包资源名称,注意末尾需要携带.jar标识。

    资源上传

    上传本地的业务 JAR 包。
    上传的 JAR 包文件名称要符合控制台要求,只能由大小写字母、数字、下划线(_)、短横线(-)和英文句号(.)组成。

    资源描述

    填写所上传的 JAR 包的描述语言,一般为功能描述。

步骤二:开发任务

  1. 登录批式计算 Spark 版控制台

  2. 在顶部菜单栏选择目标地域。

  3. 在左侧导航栏选择项目管理,在搜索框中根据项目名称进行模糊搜索,然后单击项目区块进入项目。

  4. 在项目左侧导航栏选择任务开发 > Jupyter lab,然后单击加号按钮创建任务,也可以单击 Launcher 页签下的 Spark Jar 区块。
    图片

  5. 创建任务对话框,设置关键参数,然后单击确定
    图片

    配置

    说明

    任务名称

    自定义设置任务的名称。
    名称的字符长度限制在 1~48,支持数字、大小写英文字母、下划线(_)、短横线(-)和英文句号(.),且首尾只能是数字或字母。

    任务类型

    选择 Spark 任务 > Jar

    所在文件夹

    从下拉列表中选择目标文件夹。
    系统默认存在一个数据开发文件夹,您也可以自由创建文件夹,方便任务管理。如何创建文件夹,请参见创建文件夹

    引擎版本

    目前支持 Spark 3.0.1-volcanoSpark 3.2.2-volcano 两个引擎版本。

  6. 在任务配置区域,设置关键参数。
    图片

    配置

    说明

    任务名称

    创建任务时设置的名称,此处可修改名称。

    Jar URI

    从下拉列表中选择已上传的 JAR 包。
    如果您没有提前上传 JAR 包,请参见资源文件管理

    Entrypoint Class

    业务 JAR 包程序的主类。

    Entrypoint main args

    业务程序 main 函数的args[]参数,非必填项。

  7. 任务开发和配置完成后,单击保存

    说明

    如果您对 Driver 和 Executor 有特殊要求,或者任务需要依赖文件,请配置 Spark 启动参数。相关文档,请参见配置Spark启动参数

步骤三:上线任务

开发与生产隔离,当任务开发者完成任务开发后,可以将任务上线到生产环境。

  1. 在任务配置区域上方,单击上线

  2. 任务上线设置对话框,选择运行资源池、设置任务优先级和调度策略,然后单击确定
    系统会提示任务上线成功,可以前往任务管理页面查看。
    图片

    配置

    说明

    资源池

    从下拉列表中选择 Spark 资源池。

    任务优先级

    系统默认预置的优先级为 L3,您可以按需设置任务优先级,数字越小优先级越高。
    任务优先级决定了任务内部的调度顺序,优先级高的任务先被调度,即 L3 先于 L4 被调度。

    调度策略

    根据需求配置任务调度策略:

    • GANG:保证任务的所有实例被一起调度,即当剩余资源满足任务正常运行所需资源时才进行分配;不满足所需资源则不分配。
      该策略不会出现分配资源后,任务却不能启动的现象,解决了资源死锁问题。
    • DRF:从多维资源考虑,更为合理地将资源公平分配给资源池内的各个任务,从而提升利用率。
      例如:剩余10 核 40 GB 的资源,A 任务需要10 核 20 GB 资源;B 任务需要 2 核 8 GB 的资源。如果分配给 A,剩余 0 核 20 GB 资源无法被利用;DRF 策略会选择分配给 B,剩下 8 核 32 GB 可以继续给后来任务使用。

    调度时长

    设置为 GANG 调度策略时,需要设置调度时长。
    如果超过调度时长,任务就会调度失败。如果设置为 0,则会一直重试。

步骤四:启动任务

开发与生产隔离,任务开发者将任务上线到生产环境后,由运维人员启动任务。

  1. 在项目左侧导航栏选择任务运维 > 任务管理
  2. 任务列表页面,选择目标任务,单击操作列中的启动
    图片
  3. 启动任务对话框,单击确定
    任务启动需要一定时长,请耐心等待。启动成功后,状态为运行中
    图片

步骤五:查看 Spark UI

任务在生产环境上正常运行后,您可以在 Spark UI 上查看任务的运行情况。

  1. 在项目左侧导航栏选择任务运维 > 任务管理
  2. 任务列表页面,单击目标任务操作列中的更多按钮,然后选择 Spark UI
  3. 浏览器将会自动打开 Spark UI 页面,可查看任务详情。
    在 Spark UI 界面您可以查看 Jobs、Stages、Executors 等详细信息。
    图片