使用 Dataflow Prime

Dataflow Prime 是無伺服器資料處理平台,適用於 Apache Beam 管道。Dataflow Prime 以 Dataflow 為基礎,採用運算和狀態分離的架構。在下列情況下,Dataflow Prime 可能會提升管道效率:

Dataflow Prime 支援批次和串流管道。根據預設,Dataflow Prime 會使用 Dataflow Shuffle 和 Dataflow Portable Runner 執行批次管道。

支援的 SDK 版本

Dataflow Prime 支援下列 Apache Beam SDK:

  • Apache Beam Python SDK 2.21.0 以上版本

  • Apache Beam Java SDK 2.30.0 以上版本

  • Apache Beam Go SDK 2.44.0 以上版本

如要下載 SDK 套件或閱讀版本資訊,請參閱「Apache Beam 下載」。

Dataflow Prime 功能

以下列出不同類型管道支援的 Dataflow Prime 功能:

  • 垂直自動調度資源 (記憶體)。支援 Python、Java 和 Go 中的串流管道。
  • 工作視覺化工具。支援 Python 和 Java 中的批次管道。
  • 智慧建議:支援 Python 和 Java 中的串流和批次管道。
  • Data pipelines:支援 Python 和 Java 的串流和批次管道。

非 Dataflow Prime 工作也支援工作視覺化工具、智慧建議和 Data pipelines 等功能。

垂直自動調度資源

這項功能會自動調整 Dataflow worker VM 可用的記憶體,以符合管道需求,並協助避免記憶體不足錯誤。在 Dataflow Prime 中,自動垂直調度資源功能會與自動水平調度資源功能搭配運作,動態調度資源。

詳情請參閱「垂直自動調度資源」。

工作視覺化工具

這項功能可讓您查看 Dataflow 工作的效能,並找出效率不彰的程式碼 (包括平行處理瓶頸),進而最佳化工作效能。在 Google Cloud 控制台的「Jobs」(工作) 頁面中,點選任何 Dataflow 工作,即可查看詳細資料。您也可以查看與管道各階段相關聯的步驟清單。

詳情請參閱「執行詳細資料」。

智慧建議

這項功能可讓您根據工作詳細資料頁面「診斷」分頁中提供的建議,最佳化及排解管道問題。在 Google Cloud 控制台的「Jobs」(工作) 頁面中,點選任何 Dataflow 工作,即可查看詳細資料。

詳情請參閱「診斷」。

資料管道

這項功能可讓您排定工作時間、觀察資源用量、追蹤串流資料的資料更新間隔目標,以及最佳化管道。

詳情請參閱「使用資料管道」。

配額和限制規定

Dataflow 和 Dataflow Prime 的配額和限制相同。 詳情請參閱「配額與限制」。

如果選擇 Data Pipelines,則會對配額和區域產生額外影響。

不支援的功能

Dataflow Prime 不支援下列項目:

  • 使用 --worker_machine_type 或 --machine_type (適用於 Python 管道) 和 --workerMachineType (適用於 Java 管道) 旗標,指定特定 VM 類型。
  • 使用實驗性參數 (例如 --additional-experiments=min_cpu_platform=... 或 --experiments=min_cpu_platform=...) 指定特定 VM 類型或 CPU 平台。嘗試使用 Dataflow Prime 設定最低 CPU 平台時,可能會發生錯誤,例如:Setting minimum CPU platform is not supported for the selected machine type e2-standard-2.
  • 查看或使用 SSH 登入工作站 VM。
  • 彈性資源排程 (FlexRS)。
  • 使用 Dataflow Prime 時,不支援自動選取 VM。
  • 將 VPC Service Controls 與垂直自動調整資源配置搭配使用。如果您啟用 Dataflow Prime,並在 VPC Service Controls 範圍內啟動新工作,該工作會使用 Dataflow Prime,但不會啟用垂直自動調度資源功能。
  • NVIDIA 多程序服務 (MPS)。
  • 符合下列規定的 Java 管道可以使用 MapState 和 SetState 類別:
    • 使用 Streaming Engine
    • 使用 Apache Beam SDK 2.58.0 以上版本
    • 不使用 Portable Runner

先前或功能比較表中未明確提及的所有管道選項,在 Dataflow 和 Dataflow Prime 中的運作方式都相同。

使用 Dataflow Prime 前

如要使用 Dataflow Prime,您可以重複使用現有的管道程式碼,並透過 Cloud Shell 或以程式輔助方式啟用 Dataflow Prime 選項。

Dataflow Prime 回溯相容於使用 Dataflow Shuffle 的批次工作,以及使用 Streaming Engine 的串流工作。不過,建議您先使用 Dataflow Prime 測試管道,再用於正式環境。

如果串流管道在正式環境中執行,請按照下列步驟使用 Dataflow Prime:

  1. 停止管道。

  2. 啟用 Dataflow Prime。

  3. 重新執行管道。

啟用 Dataflow Prime

如要為管道啟用 Dataflow Prime,請按照下列步驟操作:

  1. 啟用 Cloud Autoscaling API。

    啟用 API

    Dataflow Prime 會使用 Cloud Autoscaling API 動態調整記憶體。

  2. 在管道選項中啟用 Prime。

    您可以透過程式輔助方式或指令列設定管道選項。如要使用支援的 Apache Beam SDK 版本,請啟用下列標記:

Java

--dataflowServiceOptions=enable_prime

Python

Apache Beam Python SDK 2.29.0 以上版本:

--dataflow_service_options=enable_prime

Apache Beam Python SDK 2.21.0 至 2.28.0 版:

--experiments=enable_prime

Go

--dataflow_service_options=enable_prime

停用 Dataflow Prime

有時 Dataflow Prime 可能預設為啟用,例如使用 Google 提供的特定範本時。如要明確停用 Dataflow Prime 並使用標準 Dataflow,請將管道選項設為 false。enable_prime

Java

--dataflowServiceOptions=enable_prime=false

Python

Apache Beam Python SDK 2.29.0 以上版本:

--dataflow_service_options=enable_prime=false

Apache Beam Python SDK 2.21.0 至 2.28.0 版:

--experiments=enable_prime=false

Go

--dataflow_service_options=enable_prime=false

搭配範本使用 Dataflow Prime

如果您使用 Dataflow 範本,可以選擇透過下列任一方式啟用 Dataflow Prime:

  1. 如果是從「Create job from template」(依據範本建立工作) 頁面啟動的工作:

    1. 前往「依範本建立工作」頁面。

      前往「依範本建立工作」

    2. 在「Additional experiment」(其他實驗) 欄位中,輸入 enable_prime。

  2. 如要透過指令列介面從範本啟動工作,請傳遞 --additional-experiments=enable_prime 旗標。

  3. 如要在建立範本時啟用 Dataflow Prime,請設定 --experiments=enable_prime 旗標。

在 Apache Beam 筆記本中使用 Dataflow Prime

如果您使用 Apache Beam 筆記本,可以使用 PipelineOptions 透過程式輔助方式啟用 Dataflow Prime:

options = pipeline_options.PipelineOptions(
    flags=[],
    dataflow_service_options=['enable_prime'],
)

如要進一步瞭解如何在筆記本中設定 Dataflow 選項,請參閱「從筆記本中建立的管道啟動 Dataflow 工作」。

Dataflow 和 Dataflow Prime 的功能比較

下表比較了兩種 Dataflow 變體可用的功能。

功能 Dataflow Prime Dataflow
Portable Runner 批次工作的預設功能,無法關閉;串流工作的選用功能 批次工作的預設功能 (可選擇關閉),串流工作的選用功能
批次工作的 Dataflow Shuffle 預設功能,可選擇關閉 預設功能,可選擇關閉
串流工作的 Streaming Engine Java 管道的選用功能,Python 管道則一律啟用 Java 管道的選用功能,Python 管道則自 2.45.0 版起一律啟用
水平自動調度資源 預設功能,可選擇關閉 預設功能,可選擇關閉
垂直自動調度資源 預設功能,可選擇關閉 不適用
最適資源配置 選用功能 選用功能
帳單 無伺服器計費 標準版計費

後續步驟