全部產品
Search
文件中心

AnalyticDB:Spark應用配置參數說明

更新時間:Sep 25, 2024

AnalyticDB for MySQLSpark配置參數跟開源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>