本文說明如何啟用 Dataproc Spark 效能強化功能,協助 Dataproc Spark 工作在更短的時間內處理更多資料,同時降低成本。
Dataproc Spark 效能強化功能包括:
- Spark 最佳化工具強化功能:
- 為改善 Spark 方案而編寫的最佳化工具規則
- 在 Spark 工作中使用時,Dataproc BigQuery 連接器的效能提升
- Spark 執行效能強化功能:
- Spark 執行引擎改良
其他 Dataproc 效能提升:請參閱 Dataproc 叢集快取,這有助於減少存取 Cloud Storage 資料所花費的時間。
您可以在叢集或 Spark 工作中啟用 Spark 效能強化功能:
預設情況下,在叢集上啟用的 Spark 效能提升功能,會套用至叢集上執行的所有 Spark 工作,無論是提交至 Dataproc 服務或直接提交至叢集。
您也可以在提交至 Dataproc 服務的工作中啟用或停用 Spark 效能提升功能。套用至工作的 Spark 效能提升設定,只會覆寫指定工作在叢集層級設定的任何衝突設定。
定價
Spark 效能強化功能不會產生任何額外的費用。適用標準 Dataproc on Compute Engine 定價。
注意事項
Spark 效能強化功能會調整 Spark 屬性,包括下列屬性:
spark.sql.shuffle.partitions
: Spark 效能強化功能會將此屬性設為2.2
映像檔版本叢集的1000
。這項設定可能會導致小型工作變慢。spark.dataproc.sql.catalog.file.index.stats.enabled
: 如果 Hive 分區計數偏高,這項設定可能會導致驅動程式 OOM (記憶體不足) 狀況。停用這項屬性即可修正 OOM 狀況。
在建立叢集時啟用強化功能
使用 Google Cloud 控制台、Google Cloud CLI 和 Dataproc API 建立 Dataproc 叢集時,如果映像檔版本為 2.0.69 以上、2.1.17 以上、2.2.0 以上,以及後續版本,即可啟用 Dataproc Spark 效能提升功能。
控制台
- 在 Google Cloud 控制台中,開啟 Dataproc 的「建立叢集」頁面。
- 在「Create Dataproc cluster」(建立 Dataproc 叢集) 表單中,點選「Cluster on Compute Engine」(Compute Engine 上的叢集) 行的「Create」(建立)。
- 在「Create a Dataproc cluster on Compute Engine」(在 Compute Engine 上建立 Dataproc 叢集) 頁面中,按一下「Customize cluster」(自訂叢集) 面板,然後捲動至「Cluster properties」(叢集屬性) 區段。
- 如要啟用 Spark 最佳化強化功能,請按照下列步驟操作:
- 按一下「+ 新增資源」。
- 在「Prefix」(前置字元) 清單中選取「spark」,然後在「Key」(鍵) 欄位中新增「spark.dataproc.enhanced.optimizer.enabled」,並在「Value」(值) 欄位中新增「true」。
- 如要啟用 Spark 執行效能強化功能,請按照下列步驟操作:
- 按一下「+ 新增資源」。
- 在「Prefix」清單中選取「spark」,然後在「Key」欄位中新增「spark.dataproc.enhanced.execution.enabled」,並在「Value」欄位中新增「true」。
- 如要啟用 Spark 最佳化強化功能,請按照下列步驟操作:
- 填寫或確認其他叢集建立欄位,然後按一下「建立」。
gcloud
在本機的終端機視窗或 Cloud Shell 中執行下列 gcloud dataproc clusters create 指令。
gcloud dataproc clusters create CLUSTER_NAME \ --project=PROJECT_ID \ --region=REGION \ --image-version=IMAGE \ --properties=PROPERTIES
注意:
- CLUSTER_NAME:叢集名稱,在專案中不得重複。 名稱開頭須為小寫英文字母,最多可接 51 個小寫英文字母、數字和連字號,結尾不得為連字號。您可以重複使用已刪除叢集的名稱。
- PROJECT_ID:要與叢集建立關聯的專案。
- REGION:叢集所在的 Compute Engine 區域,例如
us-central1
。- 您可以新增選用的
--zone=ZONE
旗標,在指定區域內指定區域,例如us-central1-a
。如未指定區域,Dataproc 自動選擇放置區域功能會選取指定地區中的區域。
- 您可以新增選用的
- IMAGE:Dataproc Spark 最佳化工具和執行效能強化功能適用於 Dataproc 映像檔版本
2.0.69+
和2.1.17+
,如果省略這個旗標,Dataproc 會為叢集選取預設 Dataproc on Compute Engine 映像檔的最新次要版本 (請參閱預設 Dataproc 映像檔版本)。 PROPERTIES:
- 如要啟用 Spark 最佳化強化功能,請指定:
spark:spark.dataproc.enhanced.optimizer.enabled=true
- 如要啟用 Spark 執行強化功能,請指定:
spark:spark.dataproc.enhanced.execution.enabled=true
- 如要啟用 Spark 最佳化和執行強化功能,請指定:
spark:spark.dataproc.enhanced.optimizer.enabled=true,spark:spark.dataproc.enhanced.execution.enabled=true
API
在
clusters.create
要求中指定下列SoftwareConfig.properties
:- 如要啟用 Spark 最佳化強化功能,請指定:
"spark:spark.dataproc.enhanced.optimizer.enabled": "true"
- 如要啟用 Spark 執行強化功能,請指定:
"spark:spark.dataproc.enhanced.execution.enabled": "true"
- 如要啟用 Spark 最佳化和執行強化功能,請指定:
"spark:spark.dataproc.enhanced.optimizer.enabled": "true","spark:spark.dataproc.enhanced.execution.enabled": "true"
在提交作業時啟用或停用強化功能
您可以使用 Google Cloud 控制台、Google Cloud CLI 和 Dataproc API,在提交至 Dataproc 服務的 Spark 工作中啟用或停用 Spark 效能提升功能。
控制台
- 在 Google Cloud 控制台中,開啟 Dataproc 的「Jobs」(工作) 頁面。
- 在「工作」頁面中,按一下「提交工作」,然後捲動至「工作屬性」部分。
- 如要啟用 Spark 最佳化強化功能,請按照下列步驟操作:
- 按一下「+ 新增屬性」。 在「Key」欄位中新增「spark.dataproc.enhanced.optimizer.enabled」,並在「Value」欄位中新增「true」。
- 如要啟用 Spark 執行效能強化功能,請按照下列步驟操作:
- 按一下「+ 新增資源」。
- 在「Key」欄位中新增「spark.dataproc.enhanced.execution.enabled」,並在「Value」欄位中新增「true」。
- 如要啟用 Spark 最佳化強化功能,請按照下列步驟操作:
- 填寫或確認其他工作提交欄位,然後按一下「提交」。
gcloud
在本機的終端機視窗或 Cloud Shell 中執行下列 gcloud dataproc jobs submit 指令。
gcloud dataproc jobs submit SPARK_JOB_TYPE \ --cluster=CLUSTER_NAME \ --region=REGION \ --properties=PROPERTIES
注意:
- SPARK_JOB_TYPE:指定
spark
、pyspark
、spark-sql
或spark-r
。 - CLUSTER_NAME:工作執行的工作名稱。
- REGION:叢集所在的區域。
PROPERTIES:
- 如要啟用 Spark 最佳化強化功能,請指定:
spark.dataproc.enhanced.optimizer.enabled=true
- 如要啟用 Spark 執行強化功能,請指定:
spark.dataproc.enhanced.execution.enabled=true
- 如要啟用 Spark 最佳化和執行強化功能,請指定:
spark.dataproc.enhanced.optimizer.enabled=true,spark.dataproc.enhanced.execution.enabled=true
- SPARK_JOB_TYPE:指定
API
在
jobs.submit
請求中,為 SparkJob、PySparkJob、SparkSqlJob 或 SparkRJob 指定下列properties
:- 如要啟用 Spark 最佳化強化功能,請指定:
"spark.dataproc.enhanced.optimizer.enabled=true"
- 如要啟用 Spark 執行強化功能,請指定:
"spark.dataproc.enhanced.execution.enabled=true"
- 如要啟用 Spark 最佳化和執行強化功能,請指定:
"spark.dataproc.enhanced.execution.enabled=true,spark.dataproc.enhanced.optimizer.enabled=true"