使用 Dataflow Runner v2

使用 Dataflow 執行管道時,Dataflow 執行器會將管道程式碼和依附元件上傳至 Cloud Storage 值區,並建立 Dataflow 工作。這項 Dataflow 工作會在Google Cloud的受管理資源上執行管道。

  • 如果批次管道使用 Apache Beam Java SDK 2.54.0 以上版本,系統預設會啟用 Runner v2。
  • 如果管道使用 Apache Beam Java SDK,則執行多語言管道、使用自訂容器,或使用 Spanner 或 Bigtable 變更串流管道時,必須使用 Runner v2。在其他情況下,請使用預設執行器。
  • 如果管道使用 Apache Beam Python SDK 2.21.0 以上版本,系統會預設啟用 Runner v2。如果管道使用 Apache Beam Python SDK 2.45.0 以上版本,則只能使用 Dataflow Runner v2。
  • 如果是 Go 適用的 Apache Beam SDK,則只能使用 Dataflow Runner v2。

Runner v2 採用以服務為基礎的架構,可為部分管道帶來以下優勢:

限制和規定

Dataflow Runner v2 須符合下列規定:

  • Dataflow Runner v2 需要 Streaming Engine 才能執行串流工作。
  • 由於 Dataflow Runner v2 需要 Streaming Engine 才能執行串流工作,因此任何需要 Dataflow Runner v2 的 Apache Beam 轉換作業,也必須使用 Streaming Engine 執行串流工作。舉例來說,Python 適用的 Apache Beam SDK 的 Pub/Sub Lite I/O 連接器是跨語言轉換,需要 Dataflow Runner v2。如果工作或範本使用這項轉換,您就無法停用串流引擎,否則工作會失敗。
  • 對於使用 Apache Beam Java SDK 的串流管道,Runner v2 不支援 MapStateSetState 類別。如要在 Java 管道中使用 MapStateSetState 類別,請啟用 Streaming Engine、停用 Runner v2,並使用 Apache Beam SDK 2.58.0 以上版本。
  • 對於使用 Apache Beam Java SDK 的批次和串流管道,系統不支援類別 AfterSynchronizedProcessingTime
  • Dataflow 傳統範本無法使用與建構時不同的 Dataflow 執行器版本執行。也就是說,Google 提供的傳統範本無法啟用 Runner 第 2 版。如要為自訂範本啟用 Runner v2,請在建構範本時設定 --experiments=use_runner_v2 旗標。

啟用 Runner v2

如要啟用 Dataflow Runner v2,請按照 Apache Beam SDK 的設定說明操作。

Java

Dataflow Runner v2 需要 Apache Beam Java SDK 2.30.0 以上版本,建議使用 2.44.0 以上版本。

如果批次管道使用 Apache Beam Java SDK 2.54.0 以上版本,系統預設會啟用 Runner v2。

如要啟用 Runner v2,請使用 use_runner_v2 實驗執行工作。詳情請參閱「設定實驗性管道選項」。

Python

如果管道使用 Apache Beam Python SDK 2.21.0 以上版本,系統會預設啟用 Runner v2。

Apache Beam Python SDK 2.20.0 以下版本不支援 Dataflow Runner v2。

在某些情況下,即使管道在支援的 SDK 版本上執行,管道也可能不會使用 Runner v2。如要使用 Runner v2 執行工作,請設定 use_runner_v2 實驗。詳情請參閱「設定實驗性管道選項」。

Go

Dataflow Runner v2 是唯一適用於 Go 適用的 Apache Beam SDK 的 Dataflow 執行器,且預設為啟用狀態。

停用 Runner v2

如要停用 Dataflow Runner v2,請按照 Apache Beam SDK 的設定說明操作。

Java

如要停用 Runner v2,請設定 disable_runner_v2 實驗。詳情請參閱「設定實驗性管道選項」。

Python

使用 Apache Beam Python SDK 2.45.0 以上版本時,不支援停用 Runner v2。

如果是舊版 Python SDK,如果系統偵測到您的工作使用 auto_runner_v2 實驗,您可以設定 disable_runner_v2 實驗來停用 Runner v2。詳情請參閱「設定實驗性管道選項」。

Go

您無法在 Go 中停用 Dataflow Runner v2。Runner v2 是適用於 Go 適用的 Apache Beam SDK 的唯一 Dataflow 執行器。

監控工作

使用監控介面查看 Dataflow 工作指標,例如記憶體使用率、CPU 使用率等。

您可以透過 Logs ExplorerDataflow 監控介面查看工作站 VM 記錄。Worker VM 記錄包括執行器安全帶程序的記錄,以及 SDK 程序的記錄。您可以使用 VM 記錄排解工作問題。

排解 Runner v2 問題

如要使用 Dataflow Runner v2 排解工作問題,請按照標準管道疑難排解步驟操作。下列清單提供有關 Dataflow Runner v2 運作方式的其他資訊:

  • Dataflow Runner v2 工作會在工作站 VM 上執行兩種程序:SDK 程序和 Runner Harness 程序。視管道和 VM 類型而定,可能有一或多個 SDK 程序,但每個 VM 只有一個 Runner Harness 程序。
  • SDK 程序會執行使用者程式碼和其他語言專屬函式。其餘所有作業都由執行器架構程序管理。
  • 在開始向 Dataflow 要求工作之前,執行器安全帶程序會等待所有 SDK 程序連線至該程序。
  • 如果工作站 VM 在 SDK 程序啟動期間下載及安裝依附元件,工作可能會延遲。如果 SDK 處理程序發生問題 (例如啟動或安裝程式庫時),工作站會回報狀態為不正常。如果啟動時間變長,請在專案中啟用 Cloud Build API,並提交含有下列參數的管道:--prebuild_sdk_container_engine=cloud_build
  • 由於 Dataflow Runner v2 使用檢查點,每個工作站可能會等待最多五秒,緩衝處理變更,然後再傳送變更以進行後續處理。因此,預計會有大約六秒的延遲。
  • 如要診斷使用者程式碼中的問題,請檢查 SDK 程序的工作站記錄。如果發現執行器安全帶記錄有任何錯誤,請聯絡支援團隊,回報錯誤。
  • 如要排解與 Dataflow 多語言管道相關的常見錯誤,請參閱「多語言管道提示」指南。