Google Cloud 對於依賴 Apache Spark 執行資料處理和分析工作負載的客戶而言,關鍵的決策就是在 Dataproc on Compute Engine (本文中稱為「Dataproc」) 和 Serverless for Apache Spark 之間做出選擇。這兩項服務都提供代管、高度可擴充、適用於正式環境且安全的 Spark 環境,並與 OSS 相容,完全支援資料格式,但兩者的底層基礎架構管理和計費方式,均有根本上的差異。
本文比較 Google Cloud Serverless for Apache Spark 與 Dataproc,列出兩者的功能和特色,協助您決定最適合的 Spark 工作負載解決方案。
比較 Serverless for Apache Spark 和 Dataproc
如要佈建及管理基礎架構,然後在 Spark 和其他開放原始碼處理架構上執行工作負載,請使用 Compute Engine 上的 Dataproc。下表列出 Compute Engine 上的 Dataproc 與 Serverless for Apache Spark 的主要差異。
| 功能 | Serverless for Apache Spark | Compute Engine 上的 Dataproc |
|---|---|---|
| 處理架構 | 批次工作負載和互動式工作階段:Spark | Spark。其他開放原始碼架構,例如 Hive、Flink、Trino 和 Kafka |
| 無伺服器 | 是 | 否 |
| 啟動時間 | 50s | 120 秒 |
| 基礎架構控制 | 否 | 是 |
| 資源管理 | 無伺服器 | YARN |
| GPU 支援 | 是 | 是 |
| 互動工作階段 | 是 | 否 |
| 自訂容器 | 是 | 否 |
| 存取 VM (SSH) | 否 | 是 |
| Java 版本 | Java 17、21 | Java 17 和舊版 |
決定最適合的 Spark 服務
本節將說明各項服務的核心優勢和主要用途,協助您為 Spark 工作負載選擇最合適的服務。
總覽
Dataproc 和 Serverless for Apache Spark 的差異在於控管程度、基礎架構管理和計費模式。
- Dataproc 代管的 Spark:Dataproc 提供 Spark 叢集即服務,可在 Compute Engine 基礎架構上執行代管的 Spark。您必須為叢集運作時間付費。
- Serverless for Apache Spark:Serverless for Apache Spark 提供 Spark 工作即服務,在全代管的 Google Cloud基礎架構上執行 Spark。您需要支付工作執行時間的費用。
由於這些差異,每項服務最適合下列用途:
| 服務 | 用途 |
|---|---|
| Dataproc | 長時間執行的共用環境 需要精細控管基礎架構的工作負載 遷移舊版 Hadoop 和 Spark 環境 |
| Serverless for Apache Spark | 不同的專屬工作環境 排程批次工作負載 優先管理程式碼,而非基礎架構 |
主要差異
| 功能 | Dataproc | Serverless for Apache Spark |
|---|---|---|
| 管理模型 | 以叢集為準。您佈建及管理叢集。 | 全代管的無伺服器執行環境。 |
| 享有掌控權且可自訂 | 可更精確地控管叢集設定、機器類型和軟體。可使用 Spot VM,並重複使用預留項目和 Compute Engine 資源容量。適用於依賴特定 VM 規格 (例如 CPU 架構) 的工作負載。 | 基礎架構控管程度較低,著重於提交程式碼及指定 Spark 參數。 |
| 用途 | 長期執行的共用叢集、遷移現有的 Hadoop 和 Spark 工作負載 (含自訂設定)、需要深度自訂的工作負載。 | 臨時查詢、互動式分析、新的 Spark 管道,以及資源需求難以預測的工作負載。 |
| 管理作業負擔 | 管理負擔較重,需要叢集管理、資源調度和維護。 | 降低管理負擔。 Google Cloud 會管理基礎架構、調度資源和佈建作業,讓您能專注於NoOps模型。Gemini Cloud Assist 可簡化疑難排解程序,而 Serverless for Apache Spark 的自動調整功能則有助於提供最佳效能。 |
| 效率模式 | 透過共用叢集,在工作和團隊之間提高效率,並採用共用多租戶模型。 | 沒有閒置運算資源的負擔:只有在工作執行時才會分配運算資源。啟動和關閉 VM 時不會產生費用。支援共用互動式工作階段,提升效率。 |
| 位置資訊控制 | 叢集是可用區資源。建立叢集時,系統會自動選取可用區。 | Serverless for Apache Spark 支援區域工作負載,不另收費,可提供額外的穩定性和可用性。 |
| 費用 | 系統會根據節點數量,按叢集執行時間 (包括啟動和終止) 計費。包括 Dataproc 授權費和基礎架構費用。 | 系統只會根據 Spark 工作執行期間所用的資源收費,不含啟動和終止作業。以使用的資料運算單元 (DCU) 和其他基礎架構費用計費。 |
| 承諾使用折扣 (CUD) | Compute Engine CUD 適用於所有資源用量。 | BigQuery 支出型 CUD 適用於 Serverless for Apache Spark 工作。 |
| 映像檔和執行階段控制項 | 使用者可以將次要和子次要 Dataproc 映像檔版本設為固定版本。 | 使用者可以釘選次要的 Serverless for Apache Spark 執行階段版本,次要以下的版本則由 Serverless for Apache Spark 管理。 |
| 資源管理 | YARN | 無伺服器 |
| GPU 支援 | 是 | 是 |
| 互動式工作階段 | 否 | 是 |
| 自訂容器 | 否 | 是 |
| VM 存取權 (SSH) | 是 | 否 |
| Java 版本 | 支援的舊版 | Java 17、21 |
| 啟動時間 | 120 秒 | 50s |
選擇 Dataproc 的時機
Dataproc 是一項代管服務,可用於執行 Apache Spark 和其他開放原始碼資料處理架構。這項服務提供高度的控制權和彈性,因此在下列情況下是首選:
- 遷移現有的 Hadoop 和 Spark 工作負載:支援將地端 Hadoop 或 Spark 叢集遷移至 Google Cloud。以最少的程式碼變更複製現有設定,特別是使用舊版 Spark 時。
- 深度自訂和控制:可自訂叢集機型、磁碟大小和網路設定。對於複雜的長期執行作業,這種控制層級對於調整效能和最佳化資源用量至關重要。
- 長期運作的持續性叢集:支援持續運作的長期 Spark 工作,以及多個團隊和專案的持續性叢集。
- 多元的開放原始碼生態系統:提供統一的環境,可使用 Hadoop 生態系統工具 (例如 Hive、Pig 或 Presto) 執行資料處理管道,以及 Spark 工作負載。
- 安全法規遵循:可控管基礎架構,以符合特定安全或法規遵循標準,例如保護個人識別資訊 (PII) 或受保護的健康資訊 (PHI)。
- 基礎架構彈性:提供 Spot VM,並可重複使用預留項目和 Compute Engine 資源容量,以平衡資源使用量,並促進雲端基礎架構策略。
何時該選擇 Serverless for Apache Spark
Serverless for Apache Spark 會簡化叢集管理作業,讓您專心編寫 Spark 程式碼。因此非常適合用於下列資料處理情境:
- 臨時性和互動式分析:對於使用 Spark 執行互動式查詢和探索性分析的資料科學家和分析師來說,無伺服器模式提供快速入門的方式,不必專注於基礎架構。
- 以 Spark 為基礎的應用程式和管道:在 Spark 上建構新的資料管道或應用程式時,Serverless for Apache Spark 可免除叢集管理作業負擔,大幅加快開發速度。
- 需求不穩定或無法預測的工作負載:對於間歇性 Spark 工作或資源需求量不穩定的工作,Serverless for Apache Spark 的自動調度資源功能和依用量計費模式 (根據工作資源用量計費),可大幅降低成本。
- 著重提升開發人員工作效率:Serverless for Apache Spark 不需佈建及管理叢集,因此可加快建立商業邏輯的速度、更快取得洞察資訊,並提高工作效率。
- 簡化作業並減少負擔:Serverless for Apache Spark 基礎架構管理可減少作業負擔和成本。
總結
您要使用 Dataproc 還是 Serverless for Apache Spark,取決於工作負載需求、作業偏好和偏好的控管程度。
- 如要完全掌控、遷移 Hadoop 或 Spark 工作負載,或需要永久的自訂共用叢集環境,請選擇 Dataproc。
- 選擇 Serverless for Apache Spark,享受易用性、間歇性工作負載的成本效益,以及免除基礎架構管理負擔,加速開發新的 Spark 應用程式。
評估本節列出的因素後,請選取最有效率且經濟實惠的 Spark 執行服務,充分發揮資料的潛力。