與 Google Cloud Serverless for Apache Spark 比較

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 1721
啟動時間 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 執行服務,充分發揮資料的潛力。