本文介紹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,請參見公用雲下OSS Region和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配置項
開源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
JAR
通過Lindorm控制台提交JAR作業可以根據作業內容範本,配置作業參數。具體操作,請參見通過控制台管理作業。
通過DMS提交JAR作業時,可以在作業配置地區配置運行作業的自訂參數。具體操作,請參見通過DMS管理作業。