Spark应用配置参数说明

云原生数据仓库 AnalyticDB MySQL 版(AnalyticDB for MySQL)Spark配置参数跟开源Spark中的配置参数基本一致。本文介绍AnalyticDB for MySQL与开源Spark用法不一致的配置参数。

使用说明

Spark应用配置参数用于配置和调整Spark应用程序的行为和性能。使用不同的Spark开发工具,应用配置参数的格式不同。

开发工具

配置参数格式

配置参数示例

SQL开发编辑器

set key=value;

set spark.sql.hive.metastore.version=adb;

Spark Jar开发编辑器

"key": "value"

"spark.sql.hive.metastore.version":"adb"

Notebook开发编辑器

"key": "value"

"spark.sql.hive.metastore.version":"adb"

spark-submit命令行工具

key=value

spark.sql.hive.metastore.version=adb

指定Driver和Executor资源

参数名称

是否必填

参数说明

对应开源Spark参数名称

spark.driver.resourceSpec

Spark driver的资源规格。不同型号的取值对应不同的规格,详情请参见Spark资源规格列表的型号列。

重要

提交Spark应用时,可使用开源Spark参数,且取值需为Spark资源规格列表中的核数和内存。

例如CONF spark.driver.resourceSpec = c.small;,则Spark driver的资源规格为1核2 GB。

spark.driver.coresspark.driver.memory

spark.executor.resourceSpec

Spark executor的资源规格。不同型号的取值对应不同的规格,详情请参见Spark资源规格列表的型号列。

重要

提交Spark应用时,可使用开源Spark参数,且取值需为Spark资源规格列表中的核数和内存。

例如CONF spark.executor.resourceSpec = c.small;,则Spark executor的资源规格为1核2 GB。

spark.executor.coresspark.executor.memory

spark.adb.driverDiskSize

在Spark Driver节点中挂载的额外磁盘容量, 应用于业务上需要较大磁盘空间的场景。默认挂载目录为/user_data_dir。

取值范围为(0,100],单位为GiB,例如:spark.adb.driverDiskSize=50Gi,表示将Spark Driver节点中挂载的额外磁盘容量设置为50 GiB。

spark.adb.executorDiskSize

在Spark Executor节点中挂载的额外磁盘容量, 应用于Shuffle数据写入。默认挂载目录为/shuffle_volume。

取值范围为(0,100],单位为GiB,例如:spark.adb.executorDiskSize=50Gi,表示将Spark Executor节点中挂载的额外磁盘容量设置为50 GiB。

Spark资源规格列表

重要

执行Spark作业时,既可以使用预留资源,也可以使用弹性资源。如果使用Job型资源组的按需弹性资源执行Spark作业,会根据Spark资源规格以及资源规格的CPU内存比计算使用的ACU数量,具体计算方法如下。

  • CPU内存比为1:2,使用的ACU数量=Spark资源规格核数*0.8。

  • CPU内存比为1:4,使用的ACU数量=Spark资源规格核数*1。

  • CPU内存比为1:8,使用的ACU数量=Spark资源规格核数*1.5。

按需弹性资源的计费价格,详情请参见湖仓版产品定价

表 1. Spark资源规格列表

型号(Type)

规格

使用的ACU数量

CPU(Core)

内存(GB)

磁盘空间1(GB)

c.small

1

2

20

0.8

small

1

4

20

1

m.small

1

8

20

1.5

c.medium

2

4

20

1.6

medium

2

8

20

2

m.medium

2

16

20

3

c.large

4

8

20

3.2

large

4

16

20

4

m.large

4

32

20

6

c.xlarge

8

16

20

6.4

xlarge

8

32

20

8

m.xlarge

8

64

20

12

c.2xlarge

16

32

20

12.8

2xlarge

16

64

20

16

m.2xlarge

16

128

20

24

m.4xlarge

32

256

20

48

m.8xlarge

64

512

20

96

说明

1磁盘空间:预估会有1%左右的系统占用,您可用的空间大小可能不足20 GB。

指定Spark作业优先级

参数名称

是否必填

默认值

参数说明

spark.adb.priority

NORMAL

指定Spark作业的优先级。当因资源不足导致Spark作业排队执行时,等待队列中优先级更高的Spark作业优先获取运行资源,从而保障其能更早进入执行状态。取值说明:

  • HIGH:高优先级。

  • NORMAL:一般优先级。

  • LOW:低优先级。

  • LOWEST:最低优先级。

重要

建议设置Streaming类(长期运行的流作业)Spark作业的优先级为HIGH。

连接元数据服务

参数名称

是否必填

默认值

参数说明

spark.sql.catalogImplementation

  • Spark SQL类型作业的默认值为:hive

  • 非Spark SQL类型作业的默认值:in-memory

指定连接元数据服务的类型,支持如下配置:

  • hive:连接Spark内置的Hive MetaStore中的元数据信息。

  • in-memory:连接临时目录中的元数据信息。

spark.sql.hive.metastore.version

  • Spark SQL类型作业的默认值:adb

  • 非Spark SQL类型作业的默认值:<hive_version>

指定采用元数据服务版本,支持如下配置:

  • adb:连接AnalyticDB for MySQL中的元数据信息。

  • <hive_version>:指定Hive MetaStore的版本。

说明

示例

  • 连接AnalyticDB for MySQL中的元数据信息,配置如下:

    spark.sql.hive.metastore.version=adb;
  • 连接Spark内置的Hive MetaStore中的元数据信息,配置如下:

    spark.sql.catalogImplementation=hive;
    spark.sql.hive.metastore.version=2.1.3;
  • 连接临时目录中的元数据信息,配置如下:

    spark.sql.catalogImplementation=in-memory;

配置Spark UI

参数名称

是否必填

默认值

参数说明

spark.app.log.rootPath

oss://<aliyun-oa-adb-spark-阿里云账号ID-oss-可用区ID>/<集群ID>/<Spark应用ID>

存储AnalyticDB for MySQLSpark作业日志及Linux操作系统输出内容的路径。

默认OSS路径Spark应用ID的文件夹下存储的内容如下:

  • 名称为Spark应用ID-000X的文件存储用于Spark UI渲染的Spark Event日志。

  • 名称为driver和数字的文件夹存储对应的节点日志。

  • 名称为stdoutstderr的文件夹存储Linux操作系统的输出内容。

spark.adb.event.logUploadDuration

false

是否记录EventLog上传时消耗的时间。

spark.adb.buffer.maxNumEvents

1000

Driver内部缓存Event的最大数量。

spark.adb.payload.maxNumEvents

10000

一次上传的Event到OSS的最大数量。

spark.adb.event.pollingIntervalSecs

0.5

Event上传到OSS时,两次上传之间的时间间隔,单位为秒。例如:设置为每隔0.5秒上传一次。

spark.adb.event.maxPollingIntervalSecs

60

重新上传Event到OSS需要等待的最大时间间隔。单位为秒。如果上传失败需要重新上传,两次上传的时间间隔会大于spark.adb.event.pollingIntervalSecs,但时间间隔最大不会超过spark.adb.event.maxPollingIntervalSecs

spark.adb.event.maxWaitOnEndSecs

10

Event上传到OSS的最大等待时间,单位为秒。最大等待时间为开始上传到完成上传的时间间隔。超过最大等待时间会重新上传。

spark.adb.event.waitForPendingPayloadsSleepIntervalSecs

1

重新上传Event完成的最大时间,单位为秒。在超过 spark.adb.event.maxWaitOnEndSecs的时间后未完成上传,重新上传需要等待的时间。

spark.adb.eventLog.rolling.maxFileSize

209715200

EventLog在OSS存储文件的切片大小,单位为 byte。EventLog在OSS上是多个文件存储,例如 Eventlog.0、Eventlog.1,可控制Eventlog.0、Eventlog.1文件的大小。

为RAM用户授权

参数名称

是否必填

默认值

参数说明

spark.adb.roleArn

RAM系统中授予提交Spark应用的RAM用户的角色ARN,详情请参见RAM角色概览。RAM用户提交应用时,需要填写该参数,阿里云账号无需填写该参数。

说明

如果已在控制台为RAM用户进行了快速授权操作,则无需再通过配置参数为该RAM用户授权。详情请参见账号授权

内置数据源连接器

参数名称

是否必填

默认值

参数说明

spark.adb.connectors

启用AnalyticDB for MySQLSpark内置的连接器,连接器名称以逗号分隔,目前可选的连接器有oss、hudi、delta、adb、odps、external_hive、jindo。

spark.hadoop.io.compression.codec.snappy.native

false

标识Snappy文件是否为标准Snappy文件。Hadoop默认识别的是Hadoop修改过的Snappy格式文件。设置为true时将使用标准Snappy库解压,否则使用hadoop默认的Snappy库解压。

跨VPC访问和连接数据源

参数名称

是否必填

默认值

参数说明

spark.adb.eni.enabled

false

是否开启ENI访问的开关。

如果是通过外表访问其他外部数据源,则需要打开ENI访问开关。取值说明:

  • true:开启

  • false:关闭

spark.adb.eni.vswitchId

弹性网卡的交换机ID。

如果是从ECS通过VPC网络连接AnalyticDB for MySQL,需要配置VPC网络的交换机ID。

说明

当配置了开启VPC网络时,需要同时开启ENI访问,即配置spark.adb.eni.enabled为true。

spark.adb.eni.securityGroupId

弹性网卡的安全组ID。

如果是从ECS通过VPC网络连接AnalyticDB for MySQL,需配置安全组ID。

说明

当配置了开启VPC网络时,需要同时开启ENI访问,即配置spark.adb.eni.enabled为true。

spark.adb.eni.extraHosts

需要额外传入的IP和Host的映射关系,以便Spark能正确解析数据源中的Host。如连接自建的Hive数据源,则需要传入此参数。

说明
  • IP和Host之间用空格分隔。多个IP和域名用英文逗号(,)分隔,如ip0 master0,ip1 master1

  • 当配置了连接数据源时,需要同时开启ENI网络,即配置spark.adb.eni.enabled为true。

spark.adb.eni.adbHostAlias.enabled

false

是否开启自动将AnalyticDB for MySQL服务所需要的域名解析信息写入到域名映射表中。取值说明:

  • true:开启。

  • false:关闭。

在通过ENI连接EMR Hive读写数据时,需要开启。

应用重试

参数名称

是否必填

默认值

参数说明

spark.adb.maxAttempts

1

最大尝试次数,默认值为1,代表不需要重试。

假设配置为3,则这个应用在一个滑动窗口期时间内最多尝试3次。

spark.adb.attemptFailuresValidityInterval

Integer.MAX

重试计数的滑动窗口时间,单位:秒(s)。

假设配置为6000,那么当一次重试失败后,系统会计算过去6000s共进行了多少次重试,如果重试次数少于maxAttempts的配置值,则会继续重试。

指定Spark作业的运行环境

使用Virtual Environments打包Python环境,提交Spark作业时需配置以下参数。

参数名称

是否必填

默认值

参数说明

spark.pyspark.python

指定要使用的Python解释器的本地路径。

指定Spark版本

参数名称

是否必填

默认值

参数说明

spark.adb.version

3.2

指定Spark的版本。取值:

  • 2.4

  • 3.2

  • 3.3

  • 3.5

AnalyticDB for MySQL不支持的配置参数

AnalyticDB for MySQLSpark暂不支持以下开源Spark的配置参数。这些配置参数对于AnalyticDB for MySQLSpark不会生效。

Useless options(these options will be ignored):
  --deploy-mode
  --master
  --packages, please use `--jars` instead
  --exclude-packages
  --proxy-user
  --repositories
  --keytab
  --principal
  --queue
  --total-executor-cores
  --driver-library-path
  --driver-class-path
  --supervise
  -S,--silent
  -i <filename>