使用 Dataflow Prime

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

Dataflow Prime 支援批次和串流管道。根據預設,Dataflow Prime 會使用 Dataflow ShuffleDataflow Runner v2 處理批次管道。

支援的 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 中的批次管道。
  • 智慧建議。支援 Python 和 Java 中的串流和批次管道。
  • 資料管道。支援 Python 和 Java 中的串流和批次管道。

非 Dataflow Prime 工作也支援工作視覺化工具、智慧建議和資料管道功能。

自動垂直調度資源

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

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

最適資源配置

這項功能會使用 Apache Beam 的功能「資源提示」。使用資源提示,您可以為整個管道或管道的特定步驟指定資源需求。這項功能可讓您為管道的不同步驟建立自訂工作站。適當調整大小可讓您指定管道資源,盡量提高效率、降低作業成本,並避免記憶體不足和其他資源錯誤。支援記憶體和 GPU 資源提示。

正確的擬合需要 Apache Beam 2.30.0 以上版本。

詳情請參閱「正確佩戴」一節。

工作視覺化工具

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

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

智慧建議

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

詳情請參閱「診斷」一節。

資料管道

這項功能可讓您排定工作、觀察資源使用率、追蹤串流資料的資料即時性目標,以及最佳化管道。

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

配額與限制規定

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

如果選擇使用資料管道,配額和地區會受到其他影響。

不支援的功能

Dataflow Prime 不支援下列項目:

  • 使用 --worker_machine_type--machine_type 旗標 (適用於 Python 管道) 和 --workerMachineType (適用於 Java 管道),指定特定 VM 類型。
  • 查看或使用 SSH 登入工作站 VM。
  • 彈性資源排程 (FlexRS)
  • VPC Service Controls 與垂直自動調度搭配使用。如果您啟用 Dataflow Prime,並在 VPC Service Controls 範圍內啟動新工作,該工作會使用 Dataflow Prime,但不會啟用垂直自動調度資源功能。
  • NVIDIA Multi-Process Service (MPS)
  • 符合下列規定的 Java pipeline 可以使用 MapStateSetState 類別:
    • 使用 Streaming Engine
    • 使用 Apache Beam SDK 2.58.0 以上版本
    • 不使用 Runner v2

先前或功能比較表中未明確提及的所有管道選項,在 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 範本,可以選擇透過下列任一方式啟用 Dataflow Prime:

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

    1. 前往「Create job from template」(利用範本建立工作) 頁面

      前往「Create job from template」(利用範本建立工作)

    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
Runner v2 批次工作預設啟用這項功能,無法關閉;串流工作則可選擇是否啟用 預設功能,可選擇關閉批次工作,串流工作則為選用
批次工作的 Dataflow Shuffle 預設功能,可選擇關閉 預設功能,可選擇關閉
串流工作的 Streaming Engine Java 管道的選用功能,Python 管道則一律啟用 Java 管道的選用功能,Python 管道則自 2.45.0 版起一律啟用
水平自動調度 預設功能,可選擇關閉 預設功能,可選擇關閉
自動垂直調度資源 預設功能,可選擇關閉 不適用
最適資源配置 選用功能 選用功能
帳單 無伺服器計費 標準帳單

後續步驟