本文介紹Lindorm計算引擎的常用Spark配置項和配置方法。
Spark配置項
Lindorm計算引擎支援自訂常用的Spark配置項,包括資源配置項、執行配置項和監控配置項。
受限配置項
spark.master和spark.submit.deployMode為系統參數,不支援自訂。
|
配置項 |
說明 |
|
spark.master |
叢集管理服務地址。 |
|
spark.submit.deployMode |
Driver程式的部署方式。 |
資源配置項
Lindorm計算引擎基於彈性資源集區提供服務,計費方式為隨用隨付,且在開通計算引擎後,彈性資源的上限預設為無限制。如果您需要修改彈性資源上限,請參見變更配置計算引擎資源。
您向Lindorm計算引擎提交的每一個作業(JDBC作業、JAR作業、Python作業等),都可以自訂資源配置項,包括資源規格配置項和資源規模配置項。
資源規格
基礎資源配置項
|
配置項 |
說明 |
預設值 |
|
spark.driver.memory |
Driver堆內記憶體大小。單位為MB。 |
8192M |
|
spark.driver.memoryOverhead |
Driver堆外記憶體大小。單位為MB。 |
8192M |
|
spark.kubernetes.driver.disk.size |
Driver本地磁碟大小。單位為GB。 |
50 |
|
spark.executor.cores |
單Executor提供的計算槽位元量。 |
4 |
|
spark.executor.memory |
單Executor堆內記憶體大小。單位為MB。 |
8192M |
|
spark.executor.memoryOverhead |
單Executor堆外記憶體大小。單位為MB。 |
8192M |
|
spark.kubernetes.executor.disk.size |
單Executor本地磁碟大小。單位為GB。 |
50 |
進階資源配置項
|
配置項 |
說明 |
預設值 |
|
spark.{driver/executor}.resourceTag |
資源規格配置組。支援的規格:
|
無 |
|
spark.kubernetes.{driver/executor}.ecsModelPreference |
計算節點機型配置,與 計算引擎會按配置順序申請對應的機型,當配置的全部機型都沒有庫存時,會回退到按資源規格隨機申請有庫存機型。 |
無 |
|
spark.kubernetes.{driver/executor}.annotation.k8s.aliyun.com/eci-use-specs |
指定GPU的規格與型號。規格列表的詳細資料,請參見GPU執行個體規格。 |
ecs.gn7i-c8g1.2xlarge |
|
spark.{driver/executor}.resource.gpu.vendor |
指定GPU的生產廠商。 說明
該參數需要與指定的GPU規格與型號對應。 |
nvidia.com |
|
spark.{driver/executor}.resource.gpu.amount |
GPU個數。 說明
GPU個數固定為1。 |
1 |
|
spark.{driver/executor}.resource.gpu.discoveryScript |
指令檔所在的路徑。 說明
在啟動Spark driver/executor時會使用該指令碼查詢並綁定GPU資源,且指令檔所在的路徑固定為 |
/opt/spark/examples/src/main/scripts/getGpusResources.sh |
|
spark.kubernetes.executor.annotation.k8s.aliyun.com/eci-use-specs |
指定Executor執行個體類型,擴充Executor資料盤空間,避免產生資料盤空間不足的問題。 支援的執行個體類型如下:
說明
|
無 |
資源規模
|
配置項 |
說明 |
預設值 |
|
spark.executor.instances |
作業申請的Executor數量。 |
2 |
|
spark.dynamicAllocation.enabled |
是否開啟動態資源分派。取值:
開啟動態資源分派後,計算引擎將根據任務工作負載,即時進行Executor資源申請與釋放。 |
true |
|
spark.dynamicAllocation.minExecutors |
動態資源分派時,Executor的最小數量。 |
0 |
|
spark.dynamicAllocation.maxExecutors |
動態資源分派時,Executor的最大數量。 說明
Executor的最大數量與定義的Task並發量相同。 |
Infinity |
|
spark.dynamicAllocation.executorIdleTimeout |
動態資源分派時,若Executor空閑時間超過該值,Executor資源將被釋放。單位為秒(s)。 |
600s |
執行配置項
|
配置項 |
說明 |
預設值 |
|
spark.speculation |
是否開啟推測執行功能 。取值:
如果某個Task任務執行較慢,Driver將重新提交Task任務,避免在執行時出現長尾現象。 說明
長尾現象即某些Task任務執行的時間遠大於其他Task任務的執行時間。 |
true |
|
spark.task.maxFailures |
Task任務失敗次數限制。當某一個Task任務失敗次數超過該值時,將導致整個作業執行失敗。 |
4 |
|
spark.dfsLog.executor.enabled |
是否將Executor日誌儲存至DFS。取值:
在Lindorm計算引擎服務規模較大的情況下,將該配置項的取值設定為false,可以避免日誌流增大導致DFS壓力過大。 |
true |
|
spark.jars |
提交任務依賴的JAR包路徑(OSS路徑或HDFS路徑)。 如果為OSS路徑,您需要配置對應的配置項,包括:
重要
通過JDBC方式串連計算引擎時,JAR包僅支援上傳至HDFS。 |
無 |
|
spark.hadoop.fs.oss.endpoint |
OSS的Endpoint。擷取Endpoint,請參見地區和Endpoint。 |
無 |
|
spark.hadoop.fs.oss.accessKeyId |
阿里雲帳號或RAM使用者的AccessKey ID。 如何擷取AccessKey ID和AccessKey Secret,請參見擷取AccessKey。 |
無 |
|
spark.hadoop.fs.oss.accessKeySecret |
阿里雲帳號或RAM使用者的AccessKey Secret。 如何擷取AccessKey ID和AccessKey Secret,請參見擷取AccessKey。 |
無 |
|
spark.hadoop.fs.oss.impl |
訪問OSS的類。 固定值為: |
無 |
|
spark.default.parallelism |
非SQL任務預設的並發度,其中包括資料來源的並發度和Shuffle並發度。 |
無 |
|
spark.sql.shuffle.partitions |
SQL任務預設的Shuffle並發度。 |
200 |
監控配置項
Lindorm計算引擎支援通過自訂監控配置項,在作業日誌中列印Driver和Executor的系統狀態資訊監控執行個體運行狀態。
|
配置項 |
說明 |
預設值 |
|
spark.monitor.cmd |
作業監控命令組。多個監控命令用半形分號(;)分隔。監控方式為定時串列執行所配置的多個監控命令,將執行結果列印到作業日誌中,記錄系統狀態資訊。 監控命令樣本:
配置語句:
重要
通過Beeline或JDBC提交作業時不支援修改該配置項。 |
無 |
|
spark.monitor.interval |
監控命令組執行的時間間隔。單位為秒(s)。 spark.monitor.cmd所配置的監控命令組執行的時間間隔。 |
60 |
|
spark.monitor.timeout |
監控命令執行的逾時時間,單位為秒(s)。 如果spark.monitor.cmd所配置的監控命令組中,某一個監控命令執行時間超過該值,則直接跳過該監控命令,繼續執行其後面的監控命令,避免列印監控資訊時出現阻塞。 |
2 |
日誌配置項
|
配置項 |
說明 |
預設值 |
|
spark.log.level |
設定作業日誌的輸出層級。 可選擇的層級包括:
|
INFO |
開源Spark配置項
開源Spark配置項的用法,請參見Spark Configuration。
配置方法
向Lindorm計算引擎提交作業時,可以自訂資源配置項,不同的提交方式配置方法不同。
Beeline
您可以在Beeline命令列所在的Spark軟體包中,修改設定檔conf/beeline.conf。更多資訊,請參見快速入門。
設定檔樣本如下:
# Endpoint of Lindorm Compute Engine, e.g. jdbc:hive2://123.456.XX.XX:10009/;?token=bb8a15-jaksdj-sdfjsd-ak****
endpoint=jdbc:hive2://ld-bp13ez23egd123****-proxy-ldps-pub.lindorm.aliyuncs.com:10009/;?token=jfjwi2453-fe39-cmkfe-afc9-01eek2j5****
# Username for connection, by default root.
user=root
# Password for connection, by default root.
password=root
# Whether to share Spark resource between different sessions, by default true.
shareResource=false
# Normal Spark configurations
spark.dynamicAllocation.enabled=true
spark.dynamicAllocation.minExecutors=3
JDBC
通過JDBC串連串設定配置項,JDBC串連地址請參見JDBC開發實踐。
例如:通過JDBC串連串設定Spark的Shuffle預設分區數為2,Executor使用的記憶體量為8 GB。
jdbc:hive2://${host}:${port}/;?token=${token};spark.executor.memory=8g;spark.sql.shuffle.partitions=2