使用 Spark 集群

更新时间:
复制 MD 格式

Spark 集群是 EMR Serverless Spark 的常驻集群模式。集群启动后持续运行,任务可直接提交至运行中的集群执行,无需等待资源拉起,适用于对任务启动速度有较高要求的场景。

适用场景

Spark 集群适用于以下场景:

  • 短查询场景,对任务拉起速度有要求。

  • 需要频繁提交批任务的场景。

如果您的任务提交不频繁且对启动时间不敏感,建议直接使用 Serverless 模式按需提交,避免集群空闲时产生持续费用。

使用限制

  • 任务并发上限:单个 Spark 集群默认任务并发上限为 200。如需更高并发,请提交工单联系技术支持。

  • Kyuubi/Livy Gateway:通过 Kyuubi Gateway、Livy Gateway 提交的任务暂不支持提交至 Spark 集群。

  • 身份认证:暂不支持 LDAP、Kerberos 身份认证。

  • 鉴权方式:暂不支持 Range 鉴权。

  • 挂载纳管文件目录:暂不支持配置挂载纳管文件目录。

计费说明

Spark 集群启动后,按集群占用的资源(Master + Worker 节点)持续计费,无论集群是否有任务运行。提交到 Spark 集群的任务不会额外产生费用,任务使用的资源已包含在集群费用中。

具体费率信息,请参见计算资源(按量付费)

创建 Spark 集群

  1. 登录 E-MapReduce 控制台

  2. 在左侧导航栏,选择 EMR Serverless > Spark

  3. 单击目标工作空间名称,进入 Spark 控制台。

  4. 在左侧导航栏,选择运维中心 > 集群管理

  5. 在集群管理页面,选择Spark 集群页签。

  6. 单击创建 Spark 集群

  7. 填写集群配置信息。

    参数

    说明

    集群名称

    自定义 Spark 集群名称。

    引擎版本

    选择 Spark 引擎版本。

    服务高可用

    是否开启服务高可用。默认关闭。

    集群资源配置

    分别配置 Master 和 Worker 节点:
    - 部署队列:选择节点部署的资源队列。
    - 资源规格:选择节点的资源规格(vCPU、内存)。
    - 节点数量/弹性配置:配置节点数量。Worker 节点支持配置弹性伸缩的最小和最大节点数。


    网络连接

    选择集群使用的网络连接。如需新建,可前往网络连接页面创建。

  8. 单击创建缓存集群

提交任务到 Spark 集群

您可以通过以下方式将任务提交到 Spark 集群。

说明
  • 通过控制台或任务编排提交任务至 Spark 集群时,如果集群未启动,系统会自动启动集群。

  • 提交到 Spark 集群时,任务的引擎版本、网络连接、挂载纳管文件目录配置以 Spark 集群的配置为准。

方式一:通过数据开发页面提交

  1. 数据开发页面编写类型为 SQL、JAR 或 PySpark 的批任务。

  2. 单击页面右上角的执行资源下拉框,选择目标 Spark 集群。

  3. 单击发布运行

方式二:通过 spark-submit、API 或 DataWorks 提交

在提交参数中添加以下 Spark Conf 配置即可将任务提交到指定的 Spark 集群:

spark.emr.serverless.standalone.clusterId <your-Spark-cluster-id>

<your-Spark-cluster-id> 替换为实际的 Spark 集群 ID,集群 ID 可在集群列表页或集群详情页中获取。

重要

通过 DataWorks 经由 Serverless Spark Kyuubi 链路提交的任务,暂不支持提交到 Spark 集群。

方式三:通过任务编排页面提交流任务

任务编排页面启动流任务时,选择指定资源为 Spark 集群。

查看任务运行记录

提交至 Spark 集群的任务可在任务历史中查看。无论是通过数据开发页面、spark-submit 工具还是 API 提交的任务,都会在运维中心 > 任务历史中展示。

常见问题

Spark 集群和 Serverless 模式有什么区别?

对比项

Serverless 模式

Spark 集群模式

资源模式

按需拉起,用完释放。

常驻集群,启动后持续运行,可随时停止或调整资源。

启动速度

需要等待资源拉起。

任务直接提交至已运行的集群,启动速度更快。

计费方式

按任务实际使用的资源计费。

按集群占用的资源持续计费。

适用场景

任务不频繁、对启动时间不敏感的场景。

短查询、频繁提交、流任务等对启动速度有要求的场景。

创建 Spark 集群时,部署队列如何选择?

建议使用单独的资源队列配置 Spark 集群,避免与其他 Serverless 任务争抢资源。若仅用于测试,可以使用现有队列并手动调低 Worker 数量。

集群停止后任务会怎样?

集群停止后,已提交到该集群但尚未运行结束的任务将失败,失败原因提示"Spark 集群已停止"。您可以在任务历史中查看失败详情。

任务并发数不够怎么办?

Spark 集群默认任务并发上限为 200。如果需要更高并发,请提交工单申请自定义配置集群参数,通过以下配置提升并发上限:

master.SPARK_MASTER_OPTS   -Dspark.deploy.retainedApplications=200 -Dspark.deploy.retainedDrivers=200

如何在 Spark 集群中使用运行环境?

请提交工单申请自定义配置集群参数,并通过下述配置使用运行环境:

  • 创建集群时配置运行环境,在集群高级配置中添加以下参数:

    spark.standalone.pyenv.ids   <运行环境ID>
  • 提交任务时选择该任务使用的运行环境。