本文說明如何建立 Managed Service for Apache Spark 互動式工作階段和執行階段設定檔,在 Google Cloud CLI 和 Dataproc API 中稱為工作階段範本。執行階段設定檔是一組可重複使用的無伺服器 Spark 執行階段設定 (例如運算級別和執行器設定),可用於建立互動式筆記本和工作階段。
建立互動式工作階段
您可以使用 Google Cloud CLI 或 Managed Service for Apache Spark API,建立 Managed Service for Apache Spark 互動式工作階段。
gcloud
您可以使用 gcloud beta dataproc sessions create spark SESSION_ID 指令,建立 Managed Service for Apache Spark 互動式工作階段:
gcloud beta dataproc sessions create spark SESSION_ID \ --location=REGION \ optional flags ...
替換或新增下列內容:
SESSION_ID:必填。工作階段 ID。REGION:必填。可用的 Compute Engine 區域,用於託管工作階段。--version:選用。支援的 Spark 執行階段版本。如未指定版本,系統會使用預設的 Spark 執行階段版本。--container-image:選用。用於工作階段的自訂容器映像檔。--property:選用。工作階段的一或多個 Spark 屬性,以半形逗號分隔。--service-account:選用。工作階段要使用的服務帳戶。如未指定,系統會使用 Compute Engine 預設服務帳戶。--subnet:選用。工作階段區域中的子網路名稱。如未指定,Managed Service for Apache Spark 會使用工作階段區域中的default子網路。Managed Service for Apache Spark 會在子網路上啟用Private Google Access (PGA)。如需網路連線需求,請參閱「Managed Service for Apache Spark 網路設定」。
REST
您可以使用 Managed Service for Apache Spark sessions.create API 方法,建立 Managed Service for Apache Spark 互動式工作階段。設定下列要求欄位:
name:必要。工作階段名稱。version:選用。工作階段支援的任何 Spark 執行階段版本。如未指定版本,系統會使用預設版本。containerImage:選用。用於工作階段的自訂容器映像檔。properties:選用。工作階段屬性名稱與值的對應關係。如要進一步瞭解支援的屬性,請參閱「Spark 屬性」。serviceAccount:選用。用於執行工作階段的服務帳戶。如未指定,系統會使用 Compute Engine 預設服務帳戶。subnetworkUri:選用。工作階段區域中的子網路名稱。如未指定,Managed Service for Apache Spark 會使用工作階段區域中的default子網路。Managed Service for Apache Spark 會在子網路上啟用Private Google Access (PGA)。如需網路連線需求,請參閱「Managed Service for Apache Spark 網路設定」。
建立執行階段設定檔
Managed Service for Apache Spark 執行階段設定檔 (有時稱為工作階段範本) 定義了可重複使用的設定,用於建立 Managed Service for Apache Spark 互動式工作階段。您可以使用 Google Cloud 控制台、gcloud CLI 或 Managed Service for Apache Spark API 建立執行階段設定檔。在 gcloud CLI 和 Dataproc API 中,執行階段設定檔稱為 session templates。
控制台
如要使用Google Cloud 控制台建立 Managed Service for Apache Spark 執行階段設定檔,請完成下列步驟:
前往 Google Cloud 控制台的「Runtime Profiles」(執行階段設定檔) 頁面。
點選「建立」。
在「Create a runtime profile」(建立執行階段設定檔) 頁面中,進行下列主要設定:
顯示名稱:必填。輸入執行階段設定檔的顯示名稱,或接受系統預先填入的名稱。顯示名稱必須至少包含一個字母或數字,並儲存為所有工作階段類型 (包括 Spark Connect) 的頂層顯示名稱。「Runtime profile name」(執行階段設定檔名稱) 是資源 ID,系統會自動從顯示名稱衍生,將字母轉換為小寫,並將無效字元轉換為連字號,如欄位下方的提示所示。如要自訂資源 ID (與顯示名稱不同),請展開「Additional configuration」(其他設定),然後編輯「Runtime configuration」(執行階段設定)。
Region:必填。為使用這個執行階段設定檔的工作階段,選取可用的 Compute Engine 區域。預設區域為
us-east4(先前為us-central1),清單會顯示區域說明。說明:選填。輸入說明,以利識別執行階段設定檔。
「Tier」(級別):選取執行工作負載的 Managed Service for Apache Spark 級別:
Premium:預設。採用加速引擎,適合用於複雜或易受延遲影響的查詢,並支援高記憶體和 GPU 加速執行器。選取「Premium」時,系統會顯示並預設勾選「Enable Lightning Engine to accelerate performance」(啟用 Lightning Engine 來提高效能) 核取方塊,透過 Lightning Engine 加速 Spark 工作,並設定
spark.dataproc.engine=lightningEngine。標準:提供標準 Spark 執行環境,適合用於例行資料處理作業。互動式工作階段一律會以進階級執行,選取「Standard」(標準) 只會影響批次執行作業。如果選擇「Standard」(標準),Lightning Engine 會關閉,機器類型會限制為標準 CPU 類型 (
standard-4、standard-8或standard-16),且需要HDD (standard)磁碟。如果從「Premium」切換至「Standard」,高記憶體或 GPU 資源配置會重設為standard-4,SSD 磁碟則會重設為200 GiBHDD。
執行器設定:選取運算大小調整模式,以及執行工作負載的 Spark 執行器和驅動程式機器類型:
一般:預設。提供僅限 CPU 的機器型態,適合一般擷取、轉換和載入 (ETL) 工作負載。在「Executor type」(執行器類型) 清單中,選取「High memory」(高記憶體) 類型,例如
highmem-4(預設) 搭配 4 個 vCPU 和 32 GB 記憶體、highmem-8搭配 8 個 vCPU 和 64 GB 記憶體,或highmem-16搭配 16 個 vCPU 和 128 GB 記憶體,或選取「Standard」(標準) 類型,例如standard-4搭配 4 個 vCPU 和 16 GB 記憶體、standard-8搭配 8 個 vCPU 和 32 GB 記憶體,或standard-16搭配 16 個 vCPU 和 64 GB 記憶體。高記憶體機型僅適用於進階級。加速:提供附加 GPU 的機器類型,適合資料科學和 AI 或機器學習訓練和推論工作負載。選取「Accelerated」形狀後,系統會自動將級別切換為「Premium」,並將磁碟級別切換為「SSD (premium)」,預設大小為
375 GiB。在「Executor type」(執行器類型) 清單中,選取具有 4、8、12、16、24、48 或 96 個 vCPU 的 L4 類型,或選取 A100 類型,例如A100 40GB (12 vCPU)或A100 80GB (12 vCPU)。
選用:如要自訂進階執行階段、運算、自動調度資源、metastore、網路、安全性、生命週期或屬性設定,請按一下「Additional configuration」(其他設定) 展開面板。在要自訂的類別旁,按一下「Edit」(編輯),在窗格中設定,然後按一下「Save」(儲存):
執行階段設定:設定執行階段 ID、Spark 版本、容器映像檔、暫存 bucket 和 Python Package Repository:
執行階段設定檔名稱:必填。接受依據顯示名稱產生的資源 ID,或輸入自訂 ID。ID 必須介於 4 到 63 個字元之間,只能使用小寫英文字母、數字和連字號,開頭和結尾須為小寫英文字母或數字,且在建立執行階段設定檔後即無法變更。
Spark 執行階段版本:必要。選取支援的 Managed Service for Apache Spark 執行階段版本。
自訂 Spark 映像檔:選用。輸入自訂容器映像檔的 Artifact Registry 或 Container Registry URI,其中包含自訂 Java 或 Python 依附元件。
暫存值區:選用。按一下「Browse」(瀏覽),選取或建立 Cloud Storage 暫存 bucket,用於儲存工作負載依附元件、工作驅動程式輸出內容和設定檔。如果留空,Managed Service for Apache Spark 會自動管理暫存 bucket (摘要中以
Auto表示)。Python Package Repository:選用。輸入自訂存放區的 URI (例如
https://pypi.org/simple),即可安裝 Python 套件。如果留空,套件會從 Google 代管的 PyPI 提取式快取安裝 (預設摘要)。
執行器和驅動程式設定:自訂運算級別、磁碟級別、磁碟大小和獨立驅動程式設定:
級別:選取「進階」(包含選用的「啟用 Lightning Engine 以提升效能」核取方塊) 或「標準」。
執行器類型:選取一般
High memory或Standard機器型態,或加速L4或A100機器型態。「Disk tier」(磁碟級別):選取
HDD (standard)或SSD (premium)。HDD (standard)是 CPU 類型的預設值,也是標準級別的必要值。SSD (premium)適用於進階級,適合處理會大量重組或溢寫的工作負載,且為加速 GPU 形態的必要項目。「Disk size」(磁碟大小):選取磁碟大小 (以 GiB 為單位)。
HDD (standard)支援200 GiB至1500 GiB,以 100 GiB 為單位調整,預設值為200 GiB。SSD (premium)支援375 GiB、750 GiB或1500 GiB,預設值為375 GiB。Use different configuration for driver:選用。根據預設,驅動程式會使用與執行器相同的機器型態和磁碟設定。勾選這個核取方塊,即可分別自訂驅動程式機器類型、驅動程式磁碟層級和驅動程式磁碟大小。
自動調度資源:設定動態資源分配,依據工作負載需求調整執行器數量:
Enabled:預設選取,會設定
spark.dynamicAllocation.enabled。取消勾選這個核取方塊,即可停用自動調度資源功能。「Initial executors」(初始執行器):輸入初始執行器數量,這會設定
spark.dynamicAllocation.initialExecutors。預設為5。有效值範圍:2.3以下執行階段版本為2至2000;3.0以上執行階段版本為0至2000。執行器數量下限:輸入執行器數量下限,這會設定
spark.dynamicAllocation.minExecutors。執行階段版本2.3以下的預設值為2,執行階段版本3.0以上的預設值為0,上限為2000。「Maximum executors」(執行器數量上限):輸入執行器數量上限,這會設定
spark.dynamicAllocation.maxExecutors。預設值為1000,上限為2000。
Metastore 設定:選取管理資料集中繼資料的 metastore:
Lakehouse 執行階段目錄:預設。使用目前專案中的無伺服器 Lakehouse 執行階段目錄,預設會啟用 Iceberg REST 端點。您可以指定專案 ID,並選擇現有的目錄 ID 或定義新目錄。您也可以勾選「Hive Endpoint」(Hive 端點) 核取方塊,指定 Hive 端點的「Project ID」(專案 ID)、「Catalog ID」(目錄 ID) 和「Catalog Name」(目錄名稱)。
Dataproc Metastore:附加代管 Dataproc Metastore Hive Metastore (HMS) 執行個體。在「Selected project」(所選專案) 中選取專案,然後在「Metastore service」(Metastore 服務) 清單中選擇服務執行個體。
「None」(無):針對使用這個執行階段設定檔的工作階段,停用 metastore 整合功能。
網路和安全性:設定虛擬私有雲網路、執行憑證和加密金鑰:
連結叢集:在「network configuration」(網路設定) 下方, Google Cloud 控制台會自動在所選區域中選取符合資格的網路或子網路。如果所選區域沒有可用的預設網路,「Additional configuration」(其他設定) 會自動開啟,並顯示預設網路無法使用的警告。在這種情況下,「Create」(建立) 按鈕會保持停用狀態,直到您點選「Configure network」(設定網路) 並選取可用的子網路為止。您可以選取「Networks in this project」(這項專案中的網路),選擇目前專案中的「Primary network」(主要網路) 和「Subnetwork」(子網路),也可以選取「Networks shared from host project」(從主專案共用的網路),選擇Shared VPC子網路。所選子網路必須啟用Private Google Access (PGA)。如需網路連線需求,請參閱「開放子網路連線」。您也可以視需要輸入網路標記,將防火牆規則和路由套用至工作負載 VM。
使用執行筆記本:選擇使用者帳戶(預設值),以使用最終使用者憑證執行筆記本;或選擇服務帳戶,以使用自訂的服務帳戶執行會話。 如果選取「Service Account」(服務帳戶),則必須在「Service account」(服務帳戶) 欄位中指定服務帳戶。
「Encryption」(加密):選取 預設的「Google-owned and Google-managed encryption key」,或選取「Cloud KMS key」(Cloud KMS 金鑰),使用 客戶自行管理的加密金鑰 (CMEK) 加密 工作負載資料。
工作階段生命週期:設定自動終止工作階段的限制:
Max idle time:選填。輸入「Max idle time quantity」(閒置時間上限數量),然後在「Max idle time unit」(閒置時間上限單位) 中選取「
seconds」、「minutes」、「hours」或「days」,範圍從 10 分鐘到 330 小時,指定筆記本工作階段可保持閒置的時間長度,超過這個時間就會自動終止。工作階段時間上限:選填。輸入「Max session time quantity」(工作階段時間上限數量),並選取「Max session time unit」(工作階段時間上限單位),可選
seconds、minutes、hours或days,範圍從 10 分鐘到 330 小時,以指定工作階段的持續時間上限。
其他自訂設定:新增自訂 Spark 屬性和資源標籤:
Spark 屬性:選用。按一下「Add property」(新增屬性),然後輸入自訂 Spark 屬性的「Key」(鍵) 和「Value」(值) 組合。如果屬性是由表單中的專屬欄位控制 (例如運算層、執行器和驅動程式大小、Lightning Engine、
spark.dynamicAllocation.*和 Lakehouse 目錄屬性),則會由這些欄位管理,不會顯示在任意形式清單中。在 Google Cloud 控制台中,請勿加入spark:前置字元。標籤:選用。按一下「Add label」(新增標籤),然後輸入「Key」(鍵) 和「Value」(值) 組合,將標籤附加至執行階段設定檔。
在頁面右側,查看「摘要」資訊卡中的設定詳細資料,以及「預估價格」資訊卡中的預估資料運算單元 (DCU) 用量。如要進一步瞭解 DCU 費用,請參閱「Managed Service for Apache Spark 定價」。
點選「建立」。
gcloud
在 gcloud CLI 中,執行階段設定檔會以工作階段範本的形式管理。您無法在 gcloud CLI 中使用 create 指令,直接建立 Managed Service for Apache Spark 執行階段設定檔,但可以使用 gcloud beta dataproc session-templates import 指令,從 YAML 設定檔建立或更新執行階段設定檔。您也可以使用 gcloud beta dataproc session-templates export 指令匯出現有的執行階段設定檔。
REST
在 Managed Service for Apache Spark API 中,執行階段設定檔是以 SessionTemplate 資源表示。您可以使用 Managed Service for Apache Spark sessionTemplates.create API 方法,建立 Managed Service for Apache Spark 執行階段設定檔。設定下列要求欄位:
name:必要。執行階段設定檔的資源名稱。version:選用。工作階段支援的任何 Spark 執行階段版本。如未指定版本,系統會使用預設版本。sessionConfig:指定jupyterSession或sparkConnectSession。如果指定jupyterSession,也請指定JupyterConfig.displayName和JupyterConfig.kernel欄位。如要進一步瞭解 Jupyter 筆記本工作階段,請參閱「在 Managed Service for Apache Spark 啟動 Jupyter 筆記本」。containerImage:選用。用於工作階段的自訂容器映像檔。properties:選用。Spark 屬性名稱與值的對應關係,包括層級、引擎、機器型態、磁碟和自動調度資源屬性。如要進一步瞭解支援的屬性,請參閱「Spark 屬性」。serviceAccount:選用。用於執行工作階段的服務帳戶。如未指定,系統會使用 Compute Engine 預設服務帳戶。subnetworkUri:選用。工作階段區域中的子網路名稱。如未指定,Managed Service for Apache Spark 會使用工作階段區域中的default子網路。Managed Service for Apache Spark 會在子網路上啟用Private Google Access (PGA)。如需網路連線需求,請參閱「Managed Service for Apache Spark 網路設定」。