文档首页/ 数据湖探索 DLI/ 用户指南/ 使用Notebook实例提交Spark作业
更新时间:2025-09-01 GMT+08:00
分享

使用Notebook实例提交Spark作业

Notebook是基于开源JupyterLab进行了深度优化的交互式数据分析挖掘模块,提供在线的开发和调试能力,用于编写和调测模型训练代码。完成DLI对接Notebook实例后,您可以基于Notebook提供的Web交互的开发环境同时完成代码的编写与作业的开发,使用Notebook灵活地进行数据分析与探索,本节操作介绍使用Notebook作业提交DLI作业的操作步骤。

关于Jupyter Notebook的详细操作指导,请参见Jupyter Notebook使用文档

使用Notebook实例提交DLI作业适用于在线开发调试场景下的作业需求,无需准备开发环境,一站式完成数据分析分析与探索。

使用须知

  • 该功能当前处于公测阶段,如需使用,请在管理控制台右上角,选择“工单 > 新建工单”,提交申请。
  • 在DLI管理控制台删除弹性资源池时并不会删除关联的Notebook实例,如果不再使用Notebook实例,请登录ModelArts管理控制台删除对应的Notebook资源。

操作流程

  1. 创建弹性资源池并添加通用队列。

    在DLI提交Notebook实例需要使用弹性资源池资源,并在弹性资源池中创建通用队列用于后续执行作业所需的计算资源。请参考步骤1:创建弹性资源池并添加通用队列

  2. 创建Notebook实例所需的VPC和安全组。

    配置弹性资源池开启Notebook后,弹性资源池会准备Notebook功能所需的组件。请参考步骤2:创建虚拟私有云和安全组

  3. 创建增强型跨源连接用于打通DLI弹性弹性资源池和Notebook实例的网络。

    请参考步骤3:创建增强型跨源连接

  4. 准备创建Notebook实例所需的自定义镜像。

    请参考步骤4:注册ModelArts自定义镜像

  5. 创建自定义委托用于访问Notebook实例。

    请参考步骤5:创建DLI自定义委托用于访问Notebook实例

  6. 在DLI的弹性资源池中创建Notebook实例。

    请参考步骤6:在DLI弹性资源池中创建Notebook实例

  7. 配置Notebook访问DLI或LakeFormation元数据。
  8. 在JupyterLab中编写和调试代码。

    进入JupyterLab主页后,可在“Notebook”区域下编辑和调试代码。步骤8:使用Notebook实例编写和调试代码

约束限制

  • 使用Notebook实例提交DLI作业必须使用弹性资源池下的通用队列。
  • 每一个弹性资源池关联唯一的Notebook实例。
  • Notebook作业运行过程中产生的临时数据将会存储在DLI作业桶中,且必须使用并行文件系统。
  • 请在ModelArts管理控制台管理Notebook实例。请参考管理Notebook实例
  • Notebook实例用于代码编辑和开发,关联队列用于执行作业。

    如需更换Notebook实例关联的队列请在ModelArts管理控制台进行相关操作。

步骤1:创建弹性资源池并添加通用队列

  1. 创建弹性资源池。
    1. 登录DLI管理控制台,在左侧导航栏单击“资源管理 > 弹性资源池”,可进入弹性资源池管理页面。
    2. 在弹性资源池管理界面,单击界面右上角的“购买弹性资源池”。
    3. 在“购买弹性资源池”界面,填写具体的弹性资源池参数,具体参数填写参考创建弹性资源池并添加队列
      • CU范围:请确保弹性资源池预留资源大于16CUs,用于NoteBook实例资源所需。
      • 网段:请注意弹性资源池网段请勿与下列网段重复:

        172.18.0.0/16、172.16.0.0/16、10.247.0.0/16

    4. 参数填写完成后,单击“立即购买”,在界面上确认当前配置是否正确。
    5. 单击“提交”完成队列创建。等待弹性资源池状态变成“可使用”表示当前弹性资源池创建成功。
  2. 在弹性资源池添加通用队列。
    1. 选择要操作的弹性资源池,在“操作”列,单击“添加队列”。
    2. 在“添加队列”界面,配置队列的基础配置,具体参数信息请参考创建弹性资源池并添加队列

      队列类型选择“通用队列”。

    3. 单击“下一步”,在“扩缩容策略”界面配置当前队列在弹性资源池的扩缩容策略。
    4. 单击“确定”完成添加队列配置。

步骤2:创建虚拟私有云和安全组

  • 创建虚拟私有云
    1. 登录VPC管理控制台,进入创建虚拟私有云页面。
    2. 在“创建虚拟私有云”页面,根据界面提示配置VPC和子网的参数。

      具体参数说明请参考创建虚拟私有云

      其中配置IPv4网段时,请确保VPC的IPv4网段不要与下列网段重复。

      172.18.0.0/16、172.16.0.0/16、10.247.0.0/16

  • 创建安全组
    1. 登录VPC管理控制台,进入安全组列表页面。
    2. 在安全组列表右上方,单击“创建安全组”。

      进入“创建安全组”页面。根据界面提示,设置安全组参数。

      具体参数说明请参考创建安全组

    请确保安全组需要对DLI弹性资源池网段放通TCP的8998和30000-32767端口。

步骤3:创建增强型跨源连接

  1. 登录DLI管理控制台。
  2. 在左侧导航栏中,选择“跨源管理 > 增强型跨源 ”
  3. 选择“增强型跨源”,单击“创建”。

    配置增强型跨源连接信息,详细参数介绍请参见表3

    创建增强型跨源连接时:

步骤4:注册ModelArts自定义镜像

基于ModelArts提供的MindSpore预置镜像,并借助ModelArts命令行工具,通过加载镜像构建模板并修改Dockerfile,构建出一个新镜像,最后注册后在Notebook使用。

ModelArts命令行工具请参考ma-cli镜像构建命令介绍

  • 基础镜像地址:swr.{endpoint}/atelier/pyspark_3_1_1:develop-remote-pyspark_3.1.1-py_3.7-cpu-ubuntu_18.04-x86_64-uid1000-20230308194728-68791b4

    请按需更换地址中的Region名称后使用

    例如,新加坡区域的endpoint为ap-southeast-3.myhuaweicloud.com

    拼接后的基础镜像地址为:swr.ap-southeast-3.myhuaweicloud.com/atelier/pyspark_3_1_1:develop-remote-pyspark_3.1.1-py_3.7-cpu-ubuntu_18.04-x86_64-uid1000-20230308194728-68791b4

  • 在ModelArts创建并注册自定义镜像的详细操作请参考在Notebook中通过Dockerfile从0制作自定义镜像

步骤5:创建DLI自定义委托用于访问Notebook实例

参考创建DLI自定义委托权限创建DLI自定义委托用于访问Notebook实例。

请确保委托中包含以下权限:ModelArts FullAccess、DLI FullAccess、OBS Administrator、IAM的授予向云服务传递委托的权限。

关于IAM的授予向云服务传递委托的权限,如果使用的是IAM角色或策略授权:请授予IAMiam:agencies:*权限。
{
    "Version": "1.1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:agencies:*"
            ]
        },
        {
            "Effect": "Deny",
            "Action": [
                "iam:agencies:update*",
                "iam:agencies:delete*",
                "iam:agencies:create*"
            ]
        }
    ]
}

步骤6:在DLI弹性资源池中创建Notebook实例

在ModelArts管理控制台的左侧导航栏中选择“权限管理”,检查是否配置了ModelArts访问授权。新建的委托中需包含IAM的授予向云服务传递委托的权限,权限策略请参考步骤5:创建DLI自定义委托用于访问Notebook实例

  1. 在DLI弹性资源池页面预置创建Notebook实例相关的DLI资源信息。

    1. 登录DLI管理控制台,进入弹性资源池列表页面。
    2. 选择步骤1:创建弹性资源池并添加通用队列中创建的弹性资源池。
    3. 单击操作列的“更多 > Notebook(新)”。
    4. 单击“创建Notebook”,配置以下参数信息:
    5. 单击“确定”创建Notebook实例。系统跳转至Notebook实例创建页面。

  2. 在Notebook实例页面配置Notebook实例相关参数。

    1. 创建Notebook实例。

      具体参数说明请参考创建Notebook实例

      配置过程中:

      • 镜像:选择自定义镜像,选择步骤4:注册ModelArts自定义镜像中注册的镜像。
      • VPC接入:开启VPC接入接入功能

        Notebook实例的VPC接入功能当前处于公测阶段,如需使用请提交工单申请开通。

        安全组请配置为步骤2:创建虚拟私有云和安全组中创建的安全组,且安全组需要对DLI弹性资源池网段放通TCP的8998和30000-32767端口。

        参数配置完成后单击“立即创建”,等待Notebook实例创建完成。

  3. 配置Notebook实例连接DLI。

    1. 在Notebook实例的列表中单击操作类的“打开”跳转至Notebook实例页面。
    2. 在Notebook实例页面单击右上角的“connect”连接DLI。
      图2 连接DLI
    3. 在Connect Cluster页面中,填写作业运行的相关信息。
      图3 Connect Cluster
      表1 Connect Cluster

      参数名称

      说明

      配置样例

      Service Type

      连接的服务名称。

      DLI

      Pool Name

      Notebook作业运行所在队列对应的弹性资源池。

      本例配置为步骤1:创建弹性资源池并添加通用队列中创建的弹性资源池。

      Queue Name

      Notebook作业运行所在的队列。

      本例配置为步骤1:创建弹性资源池并添加通用队列中创建的队列。

      Spark Version

      Spark引擎版本。

      当前仅Spark 3.3.1版本支持使用Notebook实例提交DLI作业。

      Spark参数(--conf)

      该参数用于配置DLI作业的自定义参数。

      请参考表2

      表2 常用Spark参数配置项

      参数名称

      说明

      spark.dli.job.agency.name

      用于指定DLI作业的委托权限名称。

      在使用Flink 1.15和Spark 3.3及以上版本的引擎执行作业时,需要在作业配置中添加新建的委托信息。

      配置样例:

      本例配置为用于访问Notebook的DLI委托名称“dli_notebook”。

      spark.dli.job.agency.name=dli_notebook

      spark.sql.session.state.builder

      该参数是指定元数据的配置项。

      配置样例:配置访问DLI元数据场景的配置项

      spark.sql.session.state.builder=org.apache.spark.sql.hive.DliLakeHouseBuilder

      spark.sql.catalog.class

      用于指定不同的数据源和元数据管理系统。

      配置样例:配置访问DLI元数据场景的配置项

      spark.sql.catalog.class=org.apache.spark.sql.hive.DliLakeHouseCatalog

      spark.dli.metaAccess.enable

      用于开启或关闭对DLI元数据的访问。

      spark.dli.metaAccess.enable=true

    4. 完成后单击连接,等待右上方的connect变成队列名称,名称前面小圆点变绿后代表连接成功,即可执行相关notebook作业。
      图4 Notebook实例完成连接。
    5. 单击“Connect”测试连接。

等待实例初始化完成后即可在Notebook执行在线的数据分析操作。通常实例初始化需要2分钟左右。

在Notebook执行相关sql语句,在DLI就会启动一个Spark作业,同时在Notebook中显示作业结果。

步骤7:配置Notebook访问DLI元数据

执行作业前需要配置Notebook访问DLI或LakeFormation元数据。

步骤8:使用Notebook实例编写和调试代码

Notebook与DLI队列连接成功后,即可在“Notebook”区域下编辑和调试代码。

您可以选择使用Notebook提交作业,或在DLI管理控制台的Spark作业操作页面提交作业。

(可选)配置Notebook访问DLI元数据

在完成DLI和Notebook的对接后,您需要配置如需在Notebook提交DLI作业场景下使用元数据的方式,本小节操作介绍配置访问DLI元数据的操作步骤。

如需配置Notebook访问LakeFormation元数据请参考(可选)配置Notebook访问LakeFormation元数据

  1. 指定Notebook镜像。
  2. 自定义委托授权DLI使用DLI元数据和OBS。

    自定义委托操作步骤请参考创建DLI自定义委托权限

    请确保自定义委托具备以下权限:

    表3 DLI自定义委托场景

    场景

    委托名称

    适用场景

    权限策略

    允许DLI读写OBS将日志转储

    自定义

    DLI Flink作业下载OBS对象、OBS/DWS数据源(外表)、日志转储、使用savepoint、开启checkpoint,DLI Spark作业下载OBS对象、读写OBS外表。

    访问和使用OBS的权限策略

    允许访问DLI Catalog元数据

    自定义

    DLI 访问DLI元数据。

    访问DLI Catalog元数据的权限

  3. 确认开启访问DLI元数据
    1. 登录ModelArts管理控制台,选择“开发空间>Notebook”。
    2. 创建Notebook实例,实例处于“运行中”,单击“操作”列的“打开”,进入“JupyterLab”开发页面。
    3. 选择“Files > New > Terminal”,进入到Terminal界面。
      图5 进入到Terminal界面
    4. 执行以下命令进入到livy配置目录下,查看spark配置文件。

      cd /home/ma-user/livy/conf/

      vi spark-defaults.conf

      确认包含spark.dli.user.catalogName=dli配置项,该配置项即访问DLI元数据。

      spark.dli.user.catalogName=dli为默认配置项。

      图6 关闭默认访问DLI元数据
    5. 使用notebook编辑作业。

(可选)配置Notebook访问LakeFormation元数据

在完成DLI和Notebook的对接后,您需要配置如需在Notebook提交DLI作业场景下使用元数据的方式,本小节操作介绍配置访问LakeFormation元数据的操作步骤。

如需配置Notebook访问DLI元数据请参考(可选)配置Notebook访问DLI元数据

  1. DLI对接LakeFormation。
    1. 具体操作请参考DLI对接LakeFormation
  2. 指定Notebook镜像。
  3. 自定义委托授权DLI使用LakeFormation和OBS。

    自定义委托操作步骤请参考创建DLI自定义委托权限

    请确保自定义委托具备以下权限:

    表4 DLI自定义委托场景

    场景

    委托名称

    适用场景

    权限策略

    允许DLI读写OBS将日志转储

    自定义

    DLI Flink作业下载OBS对象、OBS/DWS数据源(外表)、日志转储、使用savepoint、开启checkpoint,DLI Spark作业下载OBS对象、读写OBS外表。

    访问和使用OBS的权限策略

    允许访问LakeFormation Catalog元数据

    自定义

    DLI 访问LakeFormation元数据。

    访问LakeFormation Catalog元数据的权限

  4. 在Notebook实例页面配置Spark参数。
    1. 选择DLI的notebook镜像的队列,并且单击connect,配置spark参数。
      spark.sql.catalogImplementation=hive
      spark.hadoop.hive-ext.dlcatalog.metastore.client.enable=true
      spark.hadoop.hive-ext.dlcatalog.metastore.session.client.class=com.huawei.cloud.dalf.lakecat.client.hiveclient.LakeCatMetaStoreClient
      spark.hadoop.lakecat.catalogname.default=lfcatalog  //需要指定要访问哪个catalog
      spark.dli.job.agency.name=agencyForLakeformation  //此委托中需要有lf和obs必要的权限,并且需要委托给DLI
      spark.driver.extraClassPath=/usr/share/extension/dli/spark-jar/lakeformation/*
      spark.executor.extraClassPath=/usr/share/extension/dli/spark-jar/lakeformation/*
      spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension
      spark.hadoop.hoodie.support.write.lock=org.apache.hudi.lakeformation.LakeCatMetastoreBasedLockProvider

      表5 参数说明

      配置项

      是否必选

      参数值

      参数配置场景

      spark.sql.catalogImplementation

      hive

      用于指定使用哪种类型的Catalog来存储和管理元数据

      spark.hadoop.hive-ext.dlcatalog.metastore.client.enable

      true

      开启访问LakeFormation元数据时需要配置该参数。

      spark.hadoop.hive-ext.dlcatalog.metastore.session.client.class

      com.huawei.cloud.dalf.lakecat.client.hiveclient.LakeCatMetaStoreClient

      开启访问LakeFormation元数据时需要配置该参数。

      spark.hadoop.lakecat.catalogname.default

      lfcatalog

      配置需要访问的LakeFormation数据目录名称。

      默认取值hive

      spark.dli.job.agency.name

      用户自定义委托名称

      用户自定义委托名。

      spark.driver.extraClassPath

      /usr/share/extension/dli/spark-jar/lakeformation/*

      配置LakeFormation的依赖包加载。

      spark.executor.extraClassPath

      /usr/share/extension/dli/spark-jar/lakeformation/*

      配置LakeFormation的依赖包加载。

      spark.sql.extensions

      org.apache.spark.sql.hudi.HoodieSparkSessionExtension

      hudi场景需配置该参数。

      spark.hadoop.hoodie.support.write.lock

      org.apache.hudi.lakeformation.LakeCatMetastoreBasedLockProvider

      hudi场景需配置该参数。

  5. 关闭默认访问DLI元数据,切换使用Lakeformation元数据。
    1. 登录ModelArts管理控制台,选择“开发环境>Notebook”。
    2. 创建Notebook实例,实例处于“运行中”,单击“操作”列的“打开”,进入“JupyterLab”开发页面。
    3. 选择“Files > New > Terminal”,进入到Terminal界面。
      图7 进入到Terminal界面
    4. 执行以下命令进入到livy配置目录下,修改spark配置文件,关闭默认访问DLI元数据。

      cd /home/ma-user/livy/conf/

      vi spark-defaults.conf

      使用#注释掉spark.dli.user.catalogName=dli,关闭默认访问DLI元数据。

      图8 关闭默认访问DLI元数据
    5. 使用notebook编辑作业。

      执行spark.sql即可访问Lakeformation元数据和hudi相关表。

      图9 访问Lakeformation元数据

相关文档