全部產品
Search
文件中心

:作業配置說明

更新時間:Sep 14, 2024

本文介紹Lindorm計算引擎的常用Spark配置項和配置方法。

Spark配置項

Lindorm計算引擎支援自訂常用的Spark配置項,包括資源配置項、執行配置項和監控配置項。

受限配置項

spark.masterspark.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

資源規格配置組。支援的規格:xlarge、2xlarge、4xlarge、8xlarge和16xlarge,配置後會按以下資源配置自動設定資源規格。

  • xlarge

    spark.{driver/executor}.cores=4

    spark.{driver/executor}.memory=8192m

    spark.{driver/executor}.memoryOverhead=8192m

    spark.kubernetes.{driver/executor}.disk.size=50

  • 2xlarge

    spark.{driver/executor}.cores=8

    spark.{driver/executor}.memory=16384m

    spark.{driver/executor}.memoryOverhead=16384m

    spark.kubernetes.{driver/executor}.disk.size=100

  • 4xlarge

    spark.{driver/executor}.cores=16

    spark.{driver/executor}.memory=32768m

    spark.{driver/executor}.memoryOverhead=32768m

    spark.kubernetes.{driver/executor}.disk.size=200

  • 8xlarge

    spark.{driver/executor}.cores=32

    spark.{driver/executor}.memory=65536m

    spark.{driver/executor}.memoryOverhead=65536m

    spark.kubernetes.{driver/executor}.disk.size=400

  • 16xlarge

    spark.{driver/executor}.cores=64

    spark.{driver/executor}.memory=131072m

    spark.{driver/executor}.memoryOverhead=131072m

    spark.kubernetes.{driver/executor}.disk.size=400

spark.kubernetes.{driver/executor}.ecsModelPreference

計算節點機型配置,與spark.{driver/executor}.resourceTag配置項搭配使用,可以按順序配置機型,最多可配置4個機型。例如:spark.kubernetes.driver.ecsModelPreference=hfg6,g6

計算引擎會按配置順序申請對應的機型,當配置的全部機型都沒有庫存時,會回退到按資源規格隨機申請有庫存機型。

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

/opt/spark/examples/src/main/scripts/getGpusResources.sh

spark.kubernetes.executor.annotation.k8s.aliyun.com/eci-use-specs

指定Executor執行個體類型,擴充Executor資料盤空間,避免產生資料盤空間不足的問題。

支援的執行個體類型如下:

  • ecs.d1ne.2xlarge:8核32 GB

  • ecs.d1ne.4xlarge:16核64 GB

  • ecs.d1ne.6xlarge:24核96 GB

  • ecs.d1ne.8xlarge:32核128 GB

  • ecs.d1ne.14xlarge:56核224 GB

    說明
    • 需按Executor資源需求配置對應的Executor執行個體類型。

    • 需同時配置以下參數

      • spark.kubernetes.executor.volumes.emptyDir.spark-local-dir-1.mount.path=/var

      • spark.kubernetes.executor.volumes.emptyDir.spark-local-dir-1.options.medium=LocalRaid0

    • 可能會存在對應Executor執行個體類型庫存不足的情況,配置後如有報錯請聯絡Lindorm支援人員(DingTalk號:s0s3eg3)。

資源規模

配置項

說明

預設值

spark.executor.instances

作業申請的Executor數量。

2

spark.dynamicAllocation.enabled

是否開啟動態資源分派。取值:

  • true:開啟。

  • false:不開啟。

開啟動態資源分派後,計算引擎將根據任務工作負載,即時進行Executor資源申請與釋放。

true

spark.dynamicAllocation.minExecutors

動態資源分派時,Executor的最小數量。

0

spark.dynamicAllocation.maxExecutors

動態資源分派時,Executor的最大數量。

說明

Executor的最大數量與定義的Task並發量相同。

Infinity

spark.dynamicAllocation.executorIdleTimeout

動態資源分派時,若Executor空閑時間超過該值,Executor資源將被釋放。單位為秒(s)。

600s

執行配置項

配置項

說明

預設值

spark.speculation

是否開啟推測執行功能 。取值:

  • true:開啟。

  • false:不開啟。

如果某個Task任務執行較慢,Driver將重新提交Task任務,避免在執行時出現長尾現象。

說明

長尾現象即某些Task任務執行的時間遠大於其他Task任務的執行時間。

true

spark.task.maxFailures

Task任務失敗次數限制。當某一個Task任務失敗次數超過該值時,將導致整個作業執行失敗。

4

spark.dfsLog.executor.enabled

是否將Executor日誌儲存至DFS。取值:

  • true:儲存。

  • false:不儲存。

在Lindorm計算引擎服務規模較大的情況下,將該配置項的取值設定為false,可以避免日誌流增大導致DFS壓力過大。

true

spark.jars

提交任務依賴的JAR包路徑(OSS路徑或HDFS路徑)。

如果為OSS路徑,您需要配置對應的配置項,包括:

  • spark.hadoop.fs.oss.endpoint

  • spark.hadoop.fs.oss.accessKeyId

  • spark.hadoop.fs.oss.accessKeySecret

  • spark.hadoop.fs.oss.impl

重要

通過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的類。

固定值為:org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem

spark.default.parallelism

非SQL任務預設的並發度,其中包括資料來源的並發度和Shuffle並發度。

spark.sql.shuffle.partitions

SQL任務預設的Shuffle並發度。

200

監控配置項

Lindorm計算引擎支援通過自訂監控配置項,在作業日誌中列印Driver和Executor的系統狀態資訊監控執行個體運行狀態。

配置項

說明

預設值

spark.monitor.cmd

作業監控命令組。多個監控命令用半形分號(;)分隔。監控方式為定時串列執行所配置的多個監控命令,將執行結果列印到作業日誌中,記錄系統狀態資訊。

監控命令樣本:

  • 系統整體狀態資訊:top -b -n 1、vmstat。

  • 記憶體狀態資訊:free -m。

  • IO狀態資訊:iostat -d -x -c -k。

  • 硬碟狀態資訊:df -h。

  • 網路狀態資訊:sar -n DEV 1 1、netstat。

配置語句:

  • 配置單個監控命令:

    "spark.monitor.cmd": "top -b -n 1"
  • 配置多個監控命令:

"spark.monitor.cmd": "top -b -n 1; vmstat; free -m; iostat -d -x -c -k; df -h; sar -n DEV 1 1; netstat"
重要

通過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管理作業

Python

  • 通過Lindorm控制台提交Python作業可以根據作業內容範本,配置作業參數。具體操作,請參見通過控制台管理作業

  • 通過DMS提交Python作業時,可以在作業配置地區配置運行作業的自訂參數。具體操作,請參見通過DMS管理作業