Managed Service for Apache Spark

1. 簡介 - Managed Service for Apache Spark

Managed Service for Apache Spark 是一項全代管且高度可擴充的服務,可執行 Apache Spark、Apache Flink、Presto 和許多其他開放原始碼工具與架構。您可以使用 Managed Service for Apache Spark 進行資料湖泊現代化、ETL / ELT,以及大規模安全資料科學。Managed Service for Apache Spark 也與多項 Google Cloud 服務完全整合,包括 BigQuery、Cloud Storage、Gemini Enterprise Agent Engine 和 Knowledge Catalog。

Managed Service for Apache Spark 提供兩種部署模式:

  • Managed Apache Spark 無伺服器可讓您執行 PySpark 工作,不必設定基礎架構和自動調度資源。Managed Apache Spark 支援 PySpark 批次工作負載和工作階段 / 筆記本。
  • 受管理 Apache Spark 叢集可讓您管理 Hadoop YARN 叢集,以執行以 YARN 為基礎的 Spark 工作負載,以及 Flink 和 Presto 等開放原始碼工具。您可以視需要垂直或水平擴充雲端叢集,包括自動調度資源。

2. 在 Google Cloud VPC 上建立 Managed Apache Spark 叢集

在這個步驟中,您將使用 Google Cloud 控制台,在 Google Cloud 上建立 Managed Apache Spark 叢集。

首先,請在控制台上啟用 Managed Apache Spark 服務 API。啟用後,在搜尋列中搜尋「Managed Apache Spark」,然後按一下「建立叢集」。

選取「Compute Engine 上的叢集」,即可使用 Google Compute Engine(GCE) VM 做為基礎架構,執行 Managed Apache Spark 叢集。

a961b2e8895e88da.jpeg

您現在位於「叢集建立」頁面。

9583c91204a09c12.jpeg

本頁內容:

  • 為叢集提供專屬名稱。
  • 選取特定區域。您也可以選取可用區,但 Managed Apache Spark 可自動為您選擇可用區。在本程式碼研究室中,請選取「us-central1」和「us-central1-c」。
  • 選取「標準」叢集類型。這樣可確保有一個主要節點。
  • 在「設定節點」分頁中,確認建立的工作站數量為兩個。
  • 在「自訂叢集」部分,勾選「啟用元件閘道」旁的方塊。這樣一來,您就能存取叢集上的網頁介面,包括 Spark UI、Yarn Node Manager 和 Jupyter Notebook。
  • 在「Optional Components」中,選取「Jupyter Notebook」。這會設定叢集,並提供 Jupyter Notebook 伺服器。
  • 其餘設定保持不變,然後點選「建立叢集」。

這會啟動 Managed Apache Spark 叢集。

3. 啟動叢集並透過 SSH 連線

叢集狀態變更為「執行中」後,請在 Managed Apache Spark 控制台中點選叢集名稱。

7332f1c2cb25807d.jpeg

按一下「VM Instance」(VM 執行個體) 分頁標籤,即可查看叢集的主節點和兩個工作站節點。

25be1578e00f669f.jpeg

按一下主要節點旁邊的「SSH」SSH,登入主要節點。

2810ffd97f315bdb.jpeg

執行 HDFS 指令,查看目錄結構。

hadoop_commands_example

sudo hadoop fs -ls /
sudo hadoop version
sudo hadoop fs -mkdir /test51 
sudo hadoop fs -ls /

4. 網頁介面和元件閘道

在 Managed Apache Spark 叢集控制台中,按一下叢集名稱,然後點選「WEB INTERFACES」(網頁介面) 分頁標籤。

6398f71d6293d6ff.jpeg

這會顯示可用的網頁介面,包括 Jupyter。按一下「Jupyter」開啟 Jupyter 筆記本。您可以使用這個筆記本在 GCS 中建立 PySpark 筆記本,將筆記本儲存在 Google Cloud Storage 中,並開啟 PySpark 筆記本,以便在本程式碼研究室中使用。

5. 監控及觀察 Spark 工作

Managed Apache Spark 叢集啟動並執行後,請建立 PySpark 批次工作,然後將工作提交至 Managed Apache Spark 叢集。

建立 Google Cloud Storage (GCS) bucket,儲存 PySpark 指令碼。請務必在與 Managed Apache Spark 叢集相同的區域建立 bucket。

679fd2f76806f4e2.jpeg

建立 GCS bucket 後,請將下列檔案複製到這個 bucket。

https://raw.githubusercontent.com/diptimanr/spark-on-gce/main/test-spark-1.py

這項指令碼會建立範例 Spark DataFrame,並以 Hive 資料表的形式寫入。

hive_job.py

from pyspark.sql import SparkSession
from datetime import datetime, date
from pyspark.sql import Row

spark = SparkSession.builder.master("local").enableHiveSupport().getOrCreate()

df = spark.createDataFrame([ (1, 2., 'string1', date(2000, 1, 1), datetime(2000, 1, 1, 12, 0)),
        (2, 3., 'string2', date(2000, 2, 1), datetime(2000, 1, 2, 12, 0)), (3, 4., 'string3', date(2000, 3, 1), datetime(2000, 1, 3, 12, 0))
    ], schema='a long, b double, c string, d date, e timestamp')
print("..... Writing data .....")
df.write.mode("overwrite").saveAsTable("test_table_1")
print("..... Complete .....")

在 Managed Apache Spark 中,將這項指令碼做為 Spark 批次工作提交。按一下左側導覽選單中的「Jobs」(工作),然後點選「Submit Job」(提交工作)

5767fc7c50b706d3.jpeg

提供工作 ID 和區域。選取叢集,並提供您複製的 Spark 指令碼 GCS 位置。這項工作會在 Managed Apache Spark 上以 Spark 批次工作形式執行。

在「屬性」下方新增鍵 spark.submit.deployMode 和值 client,確保驅動程式在 Managed Apache Spark 主節點中執行,而非在工作站節點中執行。按一下「提交」,將批次工作提交至 Managed Apache Spark。

a7ca90f5132faa31.jpeg

Spark 指令碼會建立 DataFrame,並寫入 Hive 資料表 test_table_1。

工作順利執行後,您可以在「監控」分頁下方看到控制台列印陳述式。

bdec2f3ae1055f9.jpeg

現在 Hive 資料表已建立完成,請提交另一個 Hive 查詢工作,選取資料表的內容並顯示在控制台上。

使用下列屬性建立另一項工作:

c16f02d1b3afaa27.jpeg

請注意,「Job Type」(工作類型) 設為「Hive」,查詢來源類型為「Query Text」(查詢文字),這表示我們會在「Query Text」(查詢文字) 文字方塊中編寫整個 HiveQL 陳述式。

提交工作,其餘參數則保留預設值。

e242e50bc2519bf4.jpeg

請注意,HiveQL 會選取所有記錄,並顯示在控制台上。

6. 自動調度資源

自動調度資源是估算工作負載「合適」叢集工作站節點數量的作業。

Managed Apache Spark AutoscalingPolicies API 提供叢集資源管理自動化機制,可自動調度叢集工作站 VM 資源。自動調度資源政策是可重複使用的設定,當中說明採用自動調度資源政策的叢集工作站應如何調度資源,並定義資源調度界限、頻率和積極程度,讓您可在整個叢集生命週期中精細控管叢集資源。

Managed Apache Spark 自動調度資源政策是使用 YAML 檔案編寫,這些 YAML 檔案會傳遞至 CLI 指令,用於建立叢集,或是在從 Cloud 控制台建立叢集時,從 GCS bucket 選取。

以下是 Managed Apache Spark 自動調度政策的範例:

policy.yaml

workerConfig:
  minInstances: 10
  maxInstances: 10
secondaryWorkerConfig:
  maxInstances: 50
basicAlgorithm:
  cooldownPeriod: 4m
  yarnConfig:
    scaleUpFactor: 0.05
    scaleDownFactor: 1.0
    gracefulDecommissionTimeout: 1h

7. 設定 Managed Apache Spark 選用元件

這會啟動 Managed Apache Spark 叢集。

建立 Managed Apache Spark 叢集時,系統會自動在叢集上安裝標準的 Apache Hadoop 生態系統元件 (請參閱「Managed Apache Spark 版本清單」)。您可以在建立叢集時,在叢集上安裝稱為「選用元件」的其他元件。

e39cc34245af3f01.jpeg

從控制台建立 Managed Apache Spark 叢集時,我們已啟用選用元件,並選取 Jupyter Notebook 做為選用元件。

8. 清理資源

如要清理叢集,請從 Managed Apache Spark 控制台選取叢集,然後按一下「停止」。叢集停止後,請按一下「刪除」刪除叢集。

刪除 Managed Apache Spark 叢集後,請刪除複製程式碼的 GCS 值區。

如要清理資源並停止產生任何不必要的費用,請先停止 Managed Apache Spark 叢集,然後刪除。

停止及刪除叢集前,請務必將寫入 HDFS 儲存空間的所有資料複製到 GCS,確保資料能長期保存。

如要停止叢集,請按一下「停止」。

52065de928ab52e7.jpeg

叢集停止後,請按一下「刪除」刪除叢集。

在確認對話方塊中,按一下「刪除」即可刪除叢集。

52065de928ab52e7.jpeg