Spark应用配置参数说明
云原生数据仓库 AnalyticDB MySQL 版(AnalyticDB for MySQL)Spark配置参数跟开源Spark中的配置参数基本一致。本文介绍AnalyticDB for MySQL与开源Spark用法不一致的配置参数。
使用说明
Spark应用配置参数用于配置和调整Spark应用程序的行为和性能。使用不同的Spark开发工具,应用配置参数的格式不同。
开发工具 | 配置参数格式 | 配置参数示例 |
SQL开发编辑器 | set key=value; |
|
Spark Jar开发编辑器 | "key": "value" |
|
Notebook开发编辑器 | "key": "value" |
|
spark-submit命令行工具 | key=value |
|
指定Driver和Executor资源
参数名称 | 是否必填 | 参数说明 | 对应开源Spark参数名称 |
spark.driver.resourceSpec | 是 | Spark driver的资源规格。不同型号的取值对应不同的规格,详情请参见Spark资源规格列表的型号列。 重要 提交Spark应用时,可使用开源Spark参数,且取值需为Spark资源规格列表中的核数和内存。 例如 | spark.driver.cores及spark.driver.memory |
spark.executor.resourceSpec | 是 | Spark executor的资源规格。不同型号的取值对应不同的规格,详情请参见Spark资源规格列表的型号列。 重要 提交Spark应用时,可使用开源Spark参数,且取值需为Spark资源规格列表中的核数和内存。 例如 | spark.executor.cores及spark.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作业优先获取运行资源,从而保障其能更早进入执行状态。取值说明:
重要 建议设置Streaming类(长期运行的流作业)Spark作业的优先级为HIGH。 |
连接元数据服务
参数名称 | 是否必填 | 默认值 | 参数说明 |
spark.sql.catalogImplementation | 否 |
| 指定连接元数据服务的类型,支持如下配置:
|
spark.sql.hive.metastore.version | 否 |
| 指定采用元数据服务版本,支持如下配置:
说明
|
示例
连接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 | 否 |
| 存储AnalyticDB for MySQLSpark作业日志及Linux操作系统输出内容的路径。 默认OSS路径Spark应用ID的文件夹下存储的内容如下:
|
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.maxWaitOnEndSecs | 否 | 10 | Event上传到OSS的最大等待时间,单位为秒。最大等待时间为开始上传到完成上传的时间间隔。超过最大等待时间会重新上传。 |
spark.adb.event.waitForPendingPayloadsSleepIntervalSecs | 否 | 1 | 重新上传Event完成的最大时间,单位为秒。在超过 |
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访问开关。取值说明:
|
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数据源,则需要传入此参数。 说明
|
spark.adb.eni.adbHostAlias.enabled | 否 | false | 是否开启自动将AnalyticDB for MySQL服务所需要的域名解析信息写入到域名映射表中。取值说明:
在通过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的版本。取值:
|
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>