儲存在 Bigtable 的作業資料通常需要處理、匯總或匯出,以便進行下游分析,同時不降低即時應用程式的效能。將 Bigtable 資料擷取至 Dataflow 後,您就能使用可擴充的平行管道,處理 ETL 工作流程、分析匯總和資料湖泊匯出作業的大量作業記錄。
如要建構自訂資料管道,可以使用 Apache Beam Bigtable I/O 連接器。如要執行將資料表匯出至 Cloud Storage 等常見工作,您也可以使用 Google 提供的 Dataflow 範本部署預先建構的管道,不必編寫自訂程式碼。
平行處理工作數量
平行處理工作數量由 Bigtable 叢集中的節點數控管。每個節點會管理一或多個鍵值範圍,但鍵值範圍可能會在節點之間移動,以進行負載平衡。詳情請參閱 Bigtable 說明文件中的「讀取和效能」。
系統會根據執行個體叢集中的節點數量計費。請參閱「Bigtable 定價」。
效能
下表列出 Bigtable 讀取作業的成效指標。這些工作負載是在一個 e2-standard2 worker 上執行,使用 Java 適用的 Apache Beam SDK 2.48.0。他們沒有使用 Portable Runner。
| 1 億筆記錄 | 1 KB | 1 個資料欄 | 處理量 (位元組) | 處理量 (元素) |
|---|---|---|
| 閱讀 | 180 MB/秒 | 每秒 170,000 個元素 |
這些指標是以簡單的批次管道為依據。這些基準旨在比較 I/O 連接器之間的效能,不一定代表實際的管道。Dataflow 管道效能相當複雜,取決於 VM 類型、處理的資料、外部來源和接收器的效能,以及使用者程式碼。這些指標是以執行 Java SDK 為基礎,無法代表其他語言 SDK 的效能特徵。詳情請參閱「Beam IO 效能」。
最佳做法
如要建立新的管道,請使用
BigtableIO連接器,而非CloudBigtableIO。為每種管道建立不同的應用程式設定檔。應用程式設定檔可提供更完善的指標,區分管道之間的流量,以便提供支援及追蹤用量。
監控 Bigtable 節點。如果遇到效能瓶頸,請檢查 Bigtable 內的 CPU 使用率等資源是否受限。詳情請參閱「監控」。
一般來說,預設逾時時間已針對大多數管道進行調整。如果串流管道似乎卡在讀取 Bigtable 的階段,請嘗試呼叫
withAttemptTimeout來調整嘗試逾時時間。建議您啟用 Bigtable 自動調度資源功能,或調整 Bigtable 叢集大小,以便配合 Dataflow 工作規模。
建議您在 Dataflow 工作上設定
maxNumWorkers,限制 Bigtable 叢集的負載。如果在重組前對 Bigtable 元素進行大量處理,對 Bigtable 的呼叫可能會逾時。在這種情況下,您可以呼叫
withMaxBufferElementCount來緩衝元素。這個方法會將讀取作業從串流轉換為分頁,避免發生問題。如果您使用單一 Bigtable 叢集處理串流和批次管道,且 Bigtable 端的效能降低,請考慮在叢集上設定複製功能。接著,請分隔批次和串流管道,讓兩者從不同的副本讀取資料。詳情請參閱「複製總覽」。
後續步驟
- 請參閱 Bigtable I/O 連接器說明文件。
- 請參閱 Google 提供的範本清單。