本文为您介绍如何通过控制台为 EMR on ECS 集群创建并提交 Spark 作业,EMR on ECS 集群支持PySpark、SparkJar 和 SparkSQL 作业。
作业(Job):作业是一个完整的数据计算任务,当用户需要在 EMR on ECS 集群中提交一个数据计算任务时,可在 EMR 中提交作业,作业提交后,系统使用集群计算资源执行作业。
已有可用的 EMR on ECS 集群,且集群开启了 Spark 服务,创建集群详细操作请参见创建集群。
EMR on ECS 集群支持的 Spark 作业类型:
作业类型 | 说明 | 是否支持控制台提交 | 是否支持命令行提交 |
|---|---|---|---|
PySpark | 用 Python 语言编写的 Spark 作业,通过提交 .py 脚本运行,适合数据处理、机器学习等场景。 | ✅ | ✅(spark-submit 提交) |
Spark JAR | 使用 Java 或 Scala 语言编写并打包为 .jar 文件的 Spark 作业,适合对性能要求较高或已有 JVM 体系的场景。 | ✅ | ✅(spark-submit 提交) |
Spark SQL | 使用 SQL 编写的 Spark 作业,通过 Spark 的 SQL 引擎执行,适合数据查询、报表统计等场景。 | ✅ | ✅ |
Spark R | 使用 R 语言编写的 Spark 作业(基于 SparkR),适合统计分析、数据科学场景 | ❌ | ✅(spark-submit 提交) |
您可在 EMR 控制台的 **作业中心 **> **作业管理 **或 作业实例,点击右上角 **创建作业 **创建作业,操作入口如下;通过控制台创建作业的操作详情可参见:作业中心,EMR on ECS 实际作业操作详情以界面为准。
从 EMR 控制台登录 master 节点:
通过命令行方式提交 Spark 作业。
本文以开启了 Spark 自带的 Spark examples 为例,在命令行直接提交此作业即可。
说明
spark-examples_<Versino>.jar为集群自带,具体文件名因 Spark 版本而异。您可登录集群节点后,执行find / -name "spark-examples*.jar" 2>/dev/null命令查看当前集群中的实际 JAR 包名称和路径。Spark 更多操作请参见 Spark-快速开始。以 Spark 3.5.1版本为例,在终端命令行提交:
spark-submit --class org.apache.spark.examples.SparkPi --master yarn --num-executors 3 --driver-memory 512m --executor-memory 512m --executor-cores 1 /opt/emr/current/spark3/examples/jars/spark-examples_2.12-3.5.1.jar
重要任务参数说明如下:
参数 | 样例 | 备注 |
|---|---|---|
| org.apache.spark.examples.SparkPi | 程序入口类 |
| yarn | 程序执行模式,可选yarn,yarn-client |
| 3 | 并行executor个数 |
| 512m | driver程序使用的内容,最大不可超过该节点的总内存资源 |
| 512m | 单个executor使用的内存大小,最大不可超过该节点的总内存资源 |
| 1 | 单个executor的并行数 |
作业执行后,在作业中心>作业实例页面中:
即可查看提交到集群的作业实例列表与实例详情(包含作业ID/名称、状态、类型、日志/诊断入口等信息),并可联动跳转到对应作业详情页面完成排障与追溯,详情请参见查看并管理作业实例。