Spark應(yīng)用配置參數(shù)說(shuō)明
云原生數(shù)據(jù)倉(cāng)庫(kù) AnalyticDB MySQL 版(AnalyticDB for MySQL)Spark配置參數(shù)跟開(kāi)源Spark中的配置參數(shù)基本一致。本文介紹AnalyticDB for MySQL與開(kāi)源Spark用法不一致的配置參數(shù)。
使用說(shuō)明
Spark應(yīng)用配置參數(shù)用于配置和調(diào)整Spark應(yīng)用程序的行為和性能。使用不同的Spark開(kāi)發(fā)工具,應(yīng)用配置參數(shù)的格式不同。
開(kāi)發(fā)工具 | 配置參數(shù)格式 | 配置參數(shù)示例 |
SQL開(kāi)發(fā)編輯器 | set key=value; |
|
Spark Jar開(kāi)發(fā)編輯器 | "key": "value" |
|
Notebook開(kāi)發(fā)編輯器 | "key": "value" |
|
spark-submit命令行工具 | key=value |
|
指定Driver和Executor資源
參數(shù)名稱(chēng) | 是否必填 | 參數(shù)說(shuō)明 | 對(duì)應(yīng)開(kāi)源Spark參數(shù)名稱(chēng) |
spark.driver.resourceSpec | 是 | Spark driver的資源規(guī)格。不同型號(hào)的取值對(duì)應(yīng)不同的規(guī)格,詳情請(qǐng)參見(jiàn)Spark資源規(guī)格列表的型號(hào)列。 重要 提交Spark應(yīng)用時(shí),可使用開(kāi)源Spark參數(shù),且取值需為Spark資源規(guī)格列表中的核數(shù)和內(nèi)存。 例如 | spark.driver.cores及spark.driver.memory |
spark.executor.resourceSpec | 是 | Spark executor的資源規(guī)格。不同型號(hào)的取值對(duì)應(yīng)不同的規(guī)格,詳情請(qǐng)參見(jiàn)Spark資源規(guī)格列表的型號(hào)列。 重要 提交Spark應(yīng)用時(shí),可使用開(kāi)源Spark參數(shù),且取值需為Spark資源規(guī)格列表中的核數(shù)和內(nèi)存。 例如 | spark.executor.cores及spark.executor.memory |
spark.adb.driverDiskSize | 否 | 在Spark Driver節(jié)點(diǎn)中掛載的額外磁盤(pán)容量, 應(yīng)用于業(yè)務(wù)上需要較大磁盤(pán)空間的場(chǎng)景。默認(rèn)掛載目錄為/user_data_dir。 取值范圍為(0,100],單位為GiB,例如:spark.adb.driverDiskSize=50Gi,表示將Spark Driver節(jié)點(diǎn)中掛載的額外磁盤(pán)容量設(shè)置為50 GiB。 | 無(wú) |
spark.adb.executorDiskSize | 否 | 在Spark Executor節(jié)點(diǎn)中掛載的額外磁盤(pán)容量, 應(yīng)用于Shuffle數(shù)據(jù)寫(xiě)入。默認(rèn)掛載目錄為/shuffle_volume。 取值范圍為(0,100],單位為GiB,例如:spark.adb.executorDiskSize=50Gi,表示將Spark Executor節(jié)點(diǎn)中掛載的額外磁盤(pán)容量設(shè)置為50 GiB。 | 無(wú) |
Spark資源規(guī)格列表
執(zhí)行Spark作業(yè)時(shí),既可以使用預(yù)留資源,也可以使用彈性資源。如果使用Job型資源組的按需彈性資源執(zhí)行Spark作業(yè),會(huì)根據(jù)Spark資源規(guī)格以及資源規(guī)格的CPU內(nèi)存比計(jì)算使用的ACU數(shù)量,具體計(jì)算方法如下。
CPU內(nèi)存比為1:2,使用的ACU數(shù)量=Spark資源規(guī)格核數(shù)*0.8。
CPU內(nèi)存比為1:4,使用的ACU數(shù)量=Spark資源規(guī)格核數(shù)*1。
CPU內(nèi)存比為1:8,使用的ACU數(shù)量=Spark資源規(guī)格核數(shù)*1.5。
按需彈性資源的計(jì)費(fèi)價(jià)格,詳情請(qǐng)參見(jiàn)湖倉(cāng)版產(chǎn)品定價(jià)。
表 1. Spark資源規(guī)格列表
型號(hào)(Type) | 規(guī)格 | 使用的ACU數(shù)量 | ||
CPU(Core) | 內(nèi)存(GB) | 磁盤(pán)空間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磁盤(pán)空間:預(yù)估會(huì)有1%左右的系統(tǒng)占用,您可用的空間大小可能不足20 GB。
指定Spark作業(yè)優(yōu)先級(jí)
參數(shù)名稱(chēng) | 是否必填 | 默認(rèn)值 | 參數(shù)說(shuō)明 |
spark.adb.priority | 否 | NORMAL | 指定Spark作業(yè)的優(yōu)先級(jí)。當(dāng)因資源不足導(dǎo)致Spark作業(yè)排隊(duì)執(zhí)行時(shí),等待隊(duì)列中優(yōu)先級(jí)更高的Spark作業(yè)優(yōu)先獲取運(yùn)行資源,從而保障其能更早進(jìn)入執(zhí)行狀態(tài)。取值說(shuō)明:
重要 建議設(shè)置Streaming類(lèi)(長(zhǎng)期運(yùn)行的流作業(yè))Spark作業(yè)的優(yōu)先級(jí)為HIGH。 |
連接元數(shù)據(jù)服務(wù)
參數(shù)名稱(chēng) | 是否必填 | 默認(rèn)值 | 參數(shù)說(shuō)明 |
spark.sql.catalogImplementation | 否 |
| 指定連接元數(shù)據(jù)服務(wù)的類(lèi)型,支持如下配置:
|
spark.sql.hive.metastore.version | 否 |
| 指定采用元數(shù)據(jù)服務(wù)版本,支持如下配置:
說(shuō)明
|
示例
連接AnalyticDB for MySQL中的元數(shù)據(jù)信息,配置如下:
spark.sql.hive.metastore.version=adb;
連接Spark內(nèi)置的Hive MetaStore中的元數(shù)據(jù)信息,配置如下:
spark.sql.catalogImplementation=hive; spark.sql.hive.metastore.version=2.1.3;
連接臨時(shí)目錄中的元數(shù)據(jù)信息,配置如下:
spark.sql.catalogImplementation=in-memory;
配置Spark UI
參數(shù)名稱(chēng) | 是否必填 | 默認(rèn)值 | 參數(shù)說(shuō)明 |
spark.app.log.rootPath | 否 |
| 存儲(chǔ)AnalyticDB for MySQLSpark作業(yè)日志及Linux操作系統(tǒng)輸出內(nèi)容的路徑。 默認(rèn)OSS路徑Spark應(yīng)用ID的文件夾下存儲(chǔ)的內(nèi)容如下:
|
spark.adb.event.logUploadDuration | 否 | false | 是否記錄EventLog上傳時(shí)消耗的時(shí)間。 |
spark.adb.buffer.maxNumEvents | 否 | 1000 | Driver內(nèi)部緩存Event的最大數(shù)量。 |
spark.adb.payload.maxNumEvents | 否 | 10000 | 一次上傳的Event到OSS的最大數(shù)量。 |
spark.adb.event.pollingIntervalSecs | 否 | 0.5 | Event上傳到OSS時(shí),兩次上傳之間的時(shí)間間隔,單位為秒。例如:設(shè)置為每隔0.5秒上傳一次。 |
spark.adb.event.maxPollingIntervalSecs | 否 | 60 | 重新上傳Event到OSS需要等待的最大時(shí)間間隔。單位為秒。如果上傳失敗需要重新上傳,兩次上傳的時(shí)間間隔會(huì)大于 |
spark.adb.event.maxWaitOnEndSecs | 否 | 10 | Event上傳到OSS的最大等待時(shí)間,單位為秒。最大等待時(shí)間為開(kāi)始上傳到完成上傳的時(shí)間間隔。超過(guò)最大等待時(shí)間會(huì)重新上傳。 |
spark.adb.event.waitForPendingPayloadsSleepIntervalSecs | 否 | 1 | 重新上傳Event完成的最大時(shí)間,單位為秒。在超過(guò) |
spark.adb.eventLog.rolling.maxFileSize | 否 | 209715200 | EventLog在OSS存儲(chǔ)文件的切片大小,單位為 byte。EventLog在OSS上是多個(gè)文件存儲(chǔ),例如 Eventlog.0、Eventlog.1,可控制Eventlog.0、Eventlog.1文件的大小。 |
為RAM用戶(hù)授權(quán)
參數(shù)名稱(chēng) | 是否必填 | 默認(rèn)值 | 參數(shù)說(shuō)明 |
spark.adb.roleArn | 否 | 無(wú) | 在RAM系統(tǒng)中授予提交Spark應(yīng)用的RAM用戶(hù)的角色ARN,詳情請(qǐng)參見(jiàn)RAM角色概覽。RAM用戶(hù)提交應(yīng)用時(shí),需要填寫(xiě)該參數(shù),阿里云賬號(hào)無(wú)需填寫(xiě)該參數(shù)。 說(shuō)明 如果已在控制臺(tái)為RAM用戶(hù)進(jìn)行了快速授權(quán)操作,則無(wú)需再通過(guò)配置參數(shù)為該RAM用戶(hù)授權(quán)。詳情請(qǐng)參見(jiàn)賬號(hào)授權(quán)。 |
內(nèi)置數(shù)據(jù)源連接器
參數(shù)名稱(chēng) | 是否必填 | 默認(rèn)值 | 參數(shù)說(shuō)明 |
spark.adb.connectors | 否 | 無(wú) | 啟用AnalyticDB for MySQLSpark內(nèi)置的連接器,連接器名稱(chēng)以逗號(hào)分隔,目前可選的連接器有oss、hudi、delta、adb、odps、external_hive、jindo。 |
spark.hadoop.io.compression.codec.snappy.native | 否 | false | 標(biāo)識(shí)Snappy文件是否為標(biāo)準(zhǔn)Snappy文件。Hadoop默認(rèn)識(shí)別的是Hadoop修改過(guò)的Snappy格式文件。設(shè)置為true時(shí)將使用標(biāo)準(zhǔn)Snappy庫(kù)解壓,否則使用hadoop默認(rèn)的Snappy庫(kù)解壓。 |
跨VPC訪問(wèn)和連接數(shù)據(jù)源
參數(shù)名稱(chēng) | 是否必填 | 默認(rèn)值 | 參數(shù)說(shuō)明 |
spark.adb.eni.enabled | 否 | false | 是否開(kāi)啟ENI訪問(wèn)的開(kāi)關(guān)。 如果是通過(guò)外表訪問(wèn)其他外部數(shù)據(jù)源,則需要打開(kāi)ENI訪問(wèn)開(kāi)關(guān)。取值說(shuō)明:
|
spark.adb.eni.vswitchId | 否 | 無(wú) | 彈性網(wǎng)卡的交換機(jī)ID。 如果是從ECS通過(guò)VPC網(wǎng)絡(luò)連接AnalyticDB for MySQL,需要配置VPC網(wǎng)絡(luò)的交換機(jī)ID。 說(shuō)明 當(dāng)配置了開(kāi)啟VPC網(wǎng)絡(luò)時(shí),需要同時(shí)開(kāi)啟ENI訪問(wèn),即配置spark.adb.eni.enabled為true。 |
spark.adb.eni.securityGroupId | 否 | 無(wú) | 彈性網(wǎng)卡的安全組ID。 如果是從ECS通過(guò)VPC網(wǎng)絡(luò)連接AnalyticDB for MySQL,需配置安全組ID。 說(shuō)明 當(dāng)配置了開(kāi)啟VPC網(wǎng)絡(luò)時(shí),需要同時(shí)開(kāi)啟ENI訪問(wèn),即配置spark.adb.eni.enabled為true。 |
spark.adb.eni.extraHosts | 否 | 無(wú) | 需要額外傳入的IP和Host的映射關(guān)系,以便Spark能正確解析數(shù)據(jù)源中的Host。如連接自建的Hive數(shù)據(jù)源,則需要傳入此參數(shù)。 說(shuō)明
|
spark.adb.eni.adbHostAlias.enabled | 否 | false | 是否開(kāi)啟自動(dòng)將AnalyticDB for MySQL服務(wù)所需要的域名解析信息寫(xiě)入到域名映射表中。取值說(shuō)明:
在通過(guò)ENI連接EMR Hive讀寫(xiě)數(shù)據(jù)時(shí),需要開(kāi)啟。 |
應(yīng)用重試
參數(shù)名稱(chēng) | 是否必填 | 默認(rèn)值 | 參數(shù)說(shuō)明 |
spark.adb.maxAttempts | 否 | 1 | 最大嘗試次數(shù),默認(rèn)值為1,代表不需要重試。 假設(shè)配置為3,則這個(gè)應(yīng)用在一個(gè)滑動(dòng)窗口期時(shí)間內(nèi)最多嘗試3次。 |
spark.adb.attemptFailuresValidityInterval | 否 | Integer.MAX | 重試計(jì)數(shù)的滑動(dòng)窗口時(shí)間,單位:秒(s)。 假設(shè)配置為6000,那么當(dāng)一次重試失敗后,系統(tǒng)會(huì)計(jì)算過(guò)去6000s共進(jìn)行了多少次重試,如果重試次數(shù)少于maxAttempts的配置值,則會(huì)繼續(xù)重試。 |
指定Spark作業(yè)的運(yùn)行環(huán)境
使用Virtual Environments打包Python環(huán)境,提交Spark作業(yè)時(shí)需配置以下參數(shù)。
參數(shù)名稱(chēng) | 是否必填 | 默認(rèn)值 | 參數(shù)說(shuō)明 |
spark.pyspark.python | 否 | 無(wú) | 指定要使用的Python解釋器的本地路徑。 |
指定Spark版本
參數(shù)名稱(chēng) | 是否必填 | 默認(rèn)值 | 參數(shù)說(shuō)明 |
spark.adb.version | 否 | 3.2 | 指定Spark的版本。取值:
|
AnalyticDB for MySQL不支持的配置參數(shù)
AnalyticDB for MySQLSpark暫不支持以下開(kāi)源Spark的配置參數(shù)。這些配置參數(shù)對(duì)于AnalyticDB for MySQLSpark不會(huì)生效。
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>