圖卡:數據工程及數據管道 |
批次處理 (batch processing) 是對一組存儲的數據進行處理和分析,例如每月處理一批數據。
串流數據 (streaming data) 是不同數據來源生成的數據串流,數據流經系統時即進行數據處理及分析。
即時數據解決方案 (real-time data solution):
使用① Pub/Sub 擷取 (ingestion) 串流數據,
使用② Dataflow 處理 (processing) 數據,
使用③ BigQuery 等資料庫中保存和分析數據,
使用④ Data Studio 和 ⑤ Looker 可視化 (visualization) 數據。
建構可擴展且可靠的數據管道是數據工程師的職責,面臨四大挑戰 (4V):多樣性 (variety)、數量 (volume)、速度 (velocity)、準確性 (veracity)。
數據管道 (data pipeline) 用來擷取不同來源的數據,且數據源自異步發生 (asynchronously) 的不同事件 (different events),例如物聯網的上各個傳感器,就是異步發生不同事件,且產生不同的事件訊息數據 (event messages) 。
擷取異步事件訊息數據的挑戰有四:
① 訊息數據來源多,且設備間彼此無法串聯,訊息數據會有錯誤或延遲的可能;
② 異步事件訊息數據形成的串流訊息 (streaming messages) 不容易收集及分發給數據需求的訂閱者;
③ 訊息數據產生速度快且量大;
④ 支持上述的數據管道需要確保可靠、安全及按預期執行 (reliable, secure, and perform as expected)。
Pub/Sub 是發佈者與訂閱者 (Publisher/Subscriber) 的縮寫,提供分散式消息服務 (distributed messaging service),以端到端的架構 (end-to-end architecture),來源訊息數據串流導入至 Pub/Sub 裡對應配置的主題 (topic) 後,再將訊息數據廣播給該主題的訂閱者。訂閱者可透過 Dataflow 進行訊息數據的接收及轉換,並將結果導入至 BigQuery 等資料倉儲中,或接到其他數據工具,以進行數據應用。
透過發佈者對主題的發佈,及訂閱者對主題的訂閱,兩者的關聯互不影響,達到架構更有彈性,且完全解耦 (decoupled)。
使用 Dataflow 來創建數據管道 (data pipeline) 以處理 (process) 串流數據 (streaming data) 及批次數據 (batch data)。處理的動作包含擷取、轉換、和加載數據 (extract, transform, and load data) 的 ETL 步驟。
Google 建議數據管道設計模型採用 Apache Beam,有以下幾個特點:
① 開源 (open source) 的程式設計模型 (programming model),用來定義及執行數據管道;
② 統一 (unified) 的程式設計模型,對串流數據及批次數據有統一的模型;
③ 可移植 (portable) 在不同執行環境裡,以不同運行器 (runner) 執行,例如 Dataflow 或 Spark 等;
④ 可擴展 (extensible) 自行編寫的連接器 (connectors) 或轉換庫 (transformation libraries);
⑤ 有眾多數據管道模板 (templates);
⑥ 可使用不同程式語言開發數據管道,例如 Java、Python、Go 等;
⑦ 提供軟體開發套件 (development kit) 或SDK,包含各種連接器及轉換庫。
Dataflow 收到一個工作 (job) 時的執行步驟如下:
① 最佳化數據管道設計模型;
② 將分散式作業 (distributed work) 指派給新工作節點 (workers),並依實際需求進行資源擴展;
③ 自動平衡 (rebalance) 各工作節點的執行效率;
④ 輸出結果數據,例如輸出至 BigQuery;
從上步驟可得知 Dataflow 是無服務器 (serverless) 及沒有維運 (NoOps) 的,維護、監控、及擴展都是自動的。
Dataflow 中有很多數據管道模板 (Dataflow templates),分為以下三類:
① 串流模板 (streaming templates) :例如 Pub/Sub 到 BigQuery、Pub/Sub 到 Cloud Storage、Pub/Sub 到 MongoDB 等;
② 批次模板 (batch templates):例如 BigQuery 到 Cloud Storage、BigTable 到 Cloud Storage、Cloud Storage 到 BigQuery、Cloud Spanner 到 Cloud Storage 等;
③ 通用程序模板 (utility templates):例如 Cloud Storage 檔案批次壓縮、Firestore 批量刪除資料、檔案格式轉換等。
Looker 有以下幾個特點:
① 純 Web 操作界面;
② 支持 BigQuery 及其他 60 多種 SQL 資料庫;
③ 在資料庫之上定義 Looker 建模語言 (Looker Modeling Language, LookML) 以跨資料庫操作;
④ 提供多種圖表格式;
⑤ 可以透過 Google Driver、Slack、Dropbox 等共享儀表板;
⑥ 提供 Looker API 以將 Looker Reports 嵌入至其他應用程序中。
Data Studio 有以下幾個特點:
① 已整合至 BigQuery 不需要再額外設定資料庫連結;
② 廣泛整合至 Google 產品中,例如 Google Analytics 或 Google Cloud 計費儀表板等。
0 留言