Spark应用配置参数说明
AnalyticDB MySQL版Spark配置参数跟开源Spark中的配置参数基本一致。本文介绍AnalyticDB MySQL与开源Spark用法不一致的配置参数。
适用场景
Conf配置参数适用以下场景:
通过SQL开发编辑器开发Spark SQL应用。
通过Spark Jar开发编辑器开发Spark离线应用。
通过Spark-Submit命令行工具开发Spark离线应用。
指定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.driver.cpu-vcores-ratio | 否 | Driver虚拟Core与实际CPU Core之间的比例。默认值为1。假设Driver是Medium规格(2Core8 GB),本参数值设置为2,那么Driver进程可以按照4个Core进行并发控制,相当于spark.driver.cores=4。 | 无 |
spark.adb.executor.cpu-vcores-ratio | 否 | Executor虚拟Core与实际CPU Core之间的比例。默认值为1。当单个任务的CPU使用率比较低时,可以通过该配置,提升CPU使用率。假设Executor是Medium规格(2Core8 GB),本参数值设置为2,那么Executor进程可以按照4个Core进行并发控制,也就是同时调度4个并发任务,相当于spark.executor.cores=4。 | 无 |
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.25。
按需弹性资源的计费价格,详情请参见湖仓版(3.0)产品定价。
型号(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 |
1磁盘空间:预估会有1%左右的系统占用,您可用的空间大小可能不足20 GB。
指定Spark作业优先级
参数名称 | 是否必填 | 默认值 | 参数说明 |
spark.adb.priority | 否 | NORMAL | 指定Spark作业的优先级。当因资源不足导致Spark作业排队执行时,等待队列中优先级更高的Spark作业优先获取运行资源,从而保障其能更早进入执行状态。取值说明:
重要 建议设置Streaming类(长期运行的流作业)Spark作业的优先级为HIGH。 |
连接元数据服务
参数名称 | 是否必填 | 默认值 | 参数说明 |
spark.sql.catalogImplementation | 否 |
| 指定连接元数据服务的类型,支持如下配置:
|
spark.sql.hive.metastore.version | 否 |
| 指定采用元数据服务版本,支持如下配置:
说明
|
示例
连接AnalyticDB 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 MySQL版Spark作业日志及Linux操作系统输出内容的路径。 默认OSS路径Spark应用ID的文件夹下存储的内容如下:
|
为RAM用户授权
参数名称 | 是否必填 | 默认值 | 参数说明 |
spark.adb.roleArn | 否 | 无 | 在RAM系统中授予提交Spark应用的RAM用户的角色ARN,详情请参见RAM角色概览。RAM用户提交应用需要填写该参数,阿里云账号无需填写该参数。 说明 如果已在控制台为RAM用户进行了快速授权操作,则无需再通过配置参数为该RAM用户授权。详情请参见快速授权。 |
内置数据源连接器
参数名称 | 是否必填 | 默认值 | 参数说明 |
spark.adb.connectors | 否 | 无 | 启用AnalyticDB MySQL版Spark内置的连接器,连接器名称以逗号分隔,目前可选的连接器有OSS、hbase1.x、tablestore。 |
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 MySQL版,需要配置VPC网络的交换机ID。 说明 当配置了开启VPC网络时,需要同时开启ENI访问,即配置spark.adb.eni.enabled为true。 |
spark.adb.eni.securityGroupId | 否 | 无 | 弹性网卡的安全组ID。 如果是从ECS通过VPC网络连接AnalyticDB 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 MySQL版服务所需要的域名解析信息写入到域名映射表中。取值说明:
在通过ENI连接EMR Hive读写数据时,需要开启。 |
应用重试
参数名称 | 是否必填 | 默认值 | 参数说明 |
spark.adb.maxAttempts | 否 | 1 | 最大尝试次数,默认值为1,代表不需要重试。 假设配置为3,则这个应用在一个滑动窗口期时间内最多尝试3次。 |
spark.adb.attemptFailuresValidityInterval | 否 | Long.MAX | 重试计数的滑动窗口时间,单位:毫秒(ms)。 假设配置为6000,那么当一次重试失败后,系统会计算过去6000ms共进行了多少次重试,如果重试次数少于maxAttempts的配置值,则会继续重试。 |
指定Spark作业的运行环境
使用Virtual Environments打包Python环境,提交Spark作业时需配置以下参数。
参数名称 | 是否必填 | 默认值 | 参数说明 |
spark.pyspark.python | 否 | 无 | 指定要使用的Python解释器的本地路径。 |
AnalyticDB MySQL不支持的配置参数
AnalyticDB MySQL Spark暂不支持以下开源Spark的配置参数。这些配置参数对于AnalyticDB MySQL Spark不会生效。
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>