本文說明 Spark 屬性及設定方式。Serverless for Apache Spark 會使用 Spark 屬性,判斷要為批次工作負載分配的運算、記憶體和磁碟資源。這些資源設定可能會影響工作負載配額用量和費用。詳情請參閱「Serverless for Apache Spark 配額」和「Serverless for Apache Spark 定價」。
設定 Spark 批次工作負載屬性
使用 Google Cloud 控制台、gcloud CLI 或 Dataproc API 提交 Serverless for Apache Spark Spark 批次工作負載時,可以指定 Spark 屬性。
控制台
在 Google Cloud 控制台中,前往 Dataproc 建立批次頁面。
在「資源」部分中,按一下「新增資源」。
輸入
Key
(名稱) 和Value
支援的 Spark 屬性。
gcloud
gcloud CLI 批次提交範例:
gcloud dataproc batches submit spark --properties=spark.checkpoint.compress=true \ --region=region \ other args ...
API
在 batches.create 要求中,將 RuntimeConfig.properties 設為支援的 Spark 屬性。
支援的 Spark 屬性
Apache Spark 無伺服器支援大多數的 Spark 屬性,但不支援 YARN 相關和隨機相關的 Spark 屬性,例如 spark.master=yarn
和 spark.shuffle.service.enabled
。如果 Spark 應用程式程式碼設定了 YARN 或隨機播放屬性,應用程式就會失敗。
執行階段環境屬性
Serverless for Apache Spark 支援下列自訂 Spark 屬性,可設定執行階段環境:
屬性 | 說明 |
---|---|
spark.dataproc.driverEnv.EnvironmentVariableName |
將 EnvironmentVariableName 新增至驅動程式程序。您可以指定多個環境變數。 |
資源分配屬性
Serverless for Apache Spark 支援下列 Spark 屬性,可設定資源分配:
屬性 | 說明 | 預設 | 範例 |
---|---|---|---|
spark.driver.cores |
要分配給 Spark 驅動程式的核心 (vCPU) 數量。
有效值為 4 、8 、16 。 |
4 |
|
spark.driver.memory |
要分配給 Spark 驅動程式程序的記憶體量,以 JVM 記憶體字串格式指定,並加上大小單位後置字元 (「m」、「g」或「t」)。 每個驅動程式核心的驅動程式記憶體總量,包括驅動程式記憶體負擔,必須介於 |
512m 、2g |
|
spark.driver.memoryOverhead |
要分配給 Spark 驅動程式程序的額外 JVM 記憶體量,以 JVM 記憶體字串格式指定,並加上大小單位後置字元 (「m」、「g」或「t」)。 這是與 JVM 負荷、內部字串和其他原生負荷相關聯的非堆積記憶體,包括其他驅動程式程序使用的記憶體,例如 PySpark 驅動程式程序,以及在容器中執行的其他非驅動程式程序使用的記憶體。驅動程式執行的容器記憶體大小上限取決於 每個驅動程式核心的驅動程式記憶體總量 (包括驅動程式記憶體負擔) 必須介於 |
驅動程式記憶體的 10%,但 PySpark 批次工作負載除外,這類工作負載預設為驅動程式記憶體的 40% | 512m 、2g |
spark.dataproc.driver.compute.tier |
要在驅動程式上使用的運算層級。 進階運算層提供更高的單一核心效能,但計費費率也較高。 | standard | 標準、進階 |
spark.dataproc.driver.disk.size |
分配給驅動程式的磁碟空間大小,以大小單位後置字串指定 (「k」、「m」、「g」或「t」)。不得小於 250GiB ,如果選取驅動程式的 Premium 磁碟層級,有效大小為 375g、750g、1500g、3000g、6000g 或 9000g。如果選取 Premium 磁碟層和 16 個驅動程式核心,磁碟大小下限為 750 GB。 |
每個核心 100GiB |
1024g 、2t |
spark.dataproc.driver.disk.tier |
用於驅動程式本機和隨機儲存空間的磁碟層級。
進階磁碟層級的 IOPS 和總處理量效能較佳,但計費費率較高。如果在驅動程式上選取 Premium 磁碟層級,也必須使用 spark.dataproc.driver.compute.tier=premium 選取 Premium 計算層級,並使用 spark.dataproc.executor.disk.size 指定磁碟空間量。如果選取 Premium 磁碟層級,驅動程式會額外分配 50 GiB 的磁碟空間做為系統儲存空間,使用者應用程式無法使用這部分空間。 | standard | 標準、進階 |
spark.executor.cores |
要分配給每個 Spark 執行器的核心 (vCPU) 數量。
有效值為 4 、8 、16 。 |
4 |
|
spark.executor.memory |
要分配給每個 Spark 執行器程序的記憶體量,以 JVM 記憶體字串格式指定,並加上大小單位後置字串 (「m」、「g」或「t」)。 每個執行器核心的執行器記憶體總量 (包括執行器記憶體額外負荷) 必須介於 |
512m 、2g |
|
spark.executor.memoryOverhead |
要分配給 Spark 執行器程序的額外 JVM 記憶體量,以 JVM 記憶體字串格式指定,並加上大小單位字尾 (「m」、「g」或「t」)。 這是用於 JVM 負荷、內部字串和其他原生負荷的非堆積記憶體,包括 PySpark 執行器記憶體,以及在容器中執行的其他非執行器程序所用的記憶體。執行器執行的容器記憶體大小上限取決於 每個執行器核心的執行器記憶體總量 (包括執行器記憶體額外負荷) 必須介於 |
執行器記憶體的 10%,但 PySpark 批次工作負載除外,這類工作負載預設為執行器記憶體的 40% | 512m 、2g |
spark.dataproc.executor.compute.tier |
執行器使用的運算層級。 進階運算層提供更高的單一核心效能,但計費費率也較高。 | standard | 標準、進階 |
spark.dataproc.executor.disk.size |
分配給每個執行器的磁碟空間量,
以大小單位後置字串 (「k」、「m」、「g」或「t」) 指定。
執行器磁碟空間可用於隨機資料和暫存依附元件。不得小於 250GiB ,如果執行器選取 Premium 磁碟層級,有效大小為 375g、750g、1500g、3000g、6000g 或 9000g。如果選取 Premium 磁碟層和 16 個執行器核心,磁碟大小下限為 750 GB。 |
每個核心 100GiB |
1024g 、2t |
spark.dataproc.executor.disk.tier |
用於執行器本機和隨機儲存空間的磁碟層級。
進階磁碟層級的 IOPS 和總處理量效能較佳,但計費費率較高。如果在執行器上選取 Premium 磁碟層級,也必須使用 spark.dataproc.executor.compute.tier=premium 選取 Premium 運算層級,並使用 spark.dataproc.executor.disk.size 指定磁碟空間量。如果選取 Premium 磁碟層級,每個執行器會額外分配 50 GiB 的磁碟空間做為系統儲存空間,使用者應用程式無法使用這部分空間。 | standard | 標準、進階 |
spark.executor.instances |
要分配的執行者初始數量。批次工作負載啟動後,自動調度資源可能會變更有效執行器的數量。不得小於 2 且不得大於 2000 。 |
自動調度資源屬性
如需可用於設定 Serverless for Apache Spark 自動調整資源配置的 Spark 屬性清單,請參閱「Spark 動態分配屬性」。
記錄屬性
屬性 | 說明 | 預設 | 範例 |
---|---|---|---|
spark.log.level |
設定後,系統會覆寫所有使用者定義的記錄設定,效果等同於在 Spark 啟動時呼叫 SparkContext.setLogLevel() 。有效記錄層級包括:ALL 、DEBUG 、ERROR 、FATAL 、INFO 、OFF 、TRACE 和 WARN 。 |
INFO 、DEBUG |
|
spark.executor.syncLogLevel.enabled |
如果設為 true ,透過 SparkContext.setLogLevel() 方法套用的記錄層級會傳播至所有執行器。 |
false |
true 、false |
spark.log.level.PackageName |
設定後,系統會覆寫所有使用者定義的記錄設定,效果等同於在 Spark 啟動時呼叫 SparkContext.setLogLevel(PackageName, level) 。有效記錄層級包括:ALL 、DEBUG 、ERROR 、FATAL 、INFO 、OFF 、TRACE 和 WARN 。 |
spark.log.level.org.apache.spark=error |
排程屬性
屬性 | 說明 | 預設 | 範例 |
---|---|---|---|
spark.scheduler.excludeShuffleSkewExecutors |
排定時間時,排除隨機地圖傾斜的執行器,可減少因隨機寫入傾斜而導致的隨機擷取等待時間過長。 | false |
true |
spark.scheduler.shuffleSkew.minFinishedTasks |
執行器上完成的隨機洗牌地圖工作數量下限, 可視為偏斜。 | 10 |
100 |
spark.scheduler.shuffleSkew.maxExecutorsNumber |
視為偏斜的執行器數量上限。系統會將偏差的執行器排除在目前的排程輪次之外。 | 5 | 10 |
spark.scheduler.shuffleSkew.maxExecutorsRatio |
視為偏斜的執行器總數比例上限。系統不會排定傾斜的執行器。 | 0.05 | 0.1 |
spark.scheduler.shuffleSkew.ratio |
將執行器上完成的平均隨機洗牌地圖工作數乘以這個值,即可視為偏斜。 | 1.5 | 2.0 |
其他屬性
屬性 | 說明 |
---|---|
dataproc.diagnostics.enabled |
啟用這項屬性,即可對批次工作負載失敗或取消執行進行診斷。如果啟用診斷功能,批次工作負載會在完成後繼續使用 運算資源,直到診斷完成為止。指向診斷 tarball 位置的 URI 會列在 Batch.RuntimeInfo.diagnosticOutputUri API 欄位中。 |
dataproc.gcsConnector.version |
使用這個屬性升級至Cloud Storage 連接器版本,該版本與批次工作負載執行階段版本安裝的版本不同。 |
dataproc.sparkBqConnector.version |
使用這個屬性升級至Spark BigQuery 連接器版本,該版本與批次工作負載執行階段版本安裝的版本不同 (請參閱「搭配使用 BigQuery 連接器和 Serverless for Apache Spark」)。 |
dataproc.profiling.enabled |
將此屬性設為 true ,即可為 Serverless for Apache Spark 工作負載啟用剖析功能。 |
dataproc.profiling.name |
使用這個屬性,設定在 Profiler 服務中建立設定檔時使用的名稱。 |
spark.jars |
使用這項屬性設定以半形逗號分隔的 Jar 清單,以便納入驅動程式和執行器類別路徑 |
spark.archives |
使用這個屬性設定要解壓縮到各項執行程式工作目錄的封存檔 (以半形逗號分隔)。支援 .jar、.tar.gz、.tgz 和 .zip 格式。如為無伺服器互動工作階段,請在建立互動工作階段/範本時新增這項屬性 |