大數據與機器學習 PART 2: Data Engineering for Streaming Data

❝ Data Pipeline 包含批次處理 (batch) 及即時數據處理 (real-time, streaming),兩者的設計是數據工程的核心工作,以達到可靠、安全、且按預期執行的系統架構。並且串連 BigQuery 分析工具及 Looker 等資料視覺化工具,以實現數據應用場景。 ❞

圖卡:數據工程及數據管道

大數據的挑戰

批次處理 (batch processing) 是對一組存儲的數據進行處理和分析,例如每月處理一批數據。

串流數據 (streaming data) 是不同數據來源生成的數據串流,數據流經系統時即進行數據處理及分析。

即時數據解決方案 (real-time data solution):
使用① Pub/Sub 擷取 (ingestion) 串流數據,
使用② Dataflow 處理 (processing) 數據,
使用③ BigQuery 等資料庫中保存和分析數據,
使用④ Data Studio 和 ⑤ Looker 可視化 (visualization) 數據。

建構可擴展且可靠的數據管道是數據工程師的職責,面臨四大挑戰 (4V):多樣性 (variety)、數量 (volume)、速度 (velocity)、準確性 (veracity)。


訊息導向 (message-oriented) 的架構

數據管道 (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)。


透過 Apache Beam 設計串流數據管道

使用 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 實作串流數據管道

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 進行數據可視化

Looker 有以下幾個特點:

① 純 Web 操作界面;
② 支持 BigQuery 及其他 60 多種 SQL 資料庫;
③ 在資料庫之上定義 Looker 建模語言 (Looker Modeling Language, LookML) 以跨資料庫操作;
④ 提供多種圖表格式;
⑤ 可以透過 Google Driver、Slack、Dropbox 等共享儀表板;
⑥ 提供 Looker API 以將 Looker Reports 嵌入至其他應用程序中。


Visualization with Data Studio 透過 Data Studio 進行數據可視化

Data Studio 有以下幾個特點:

① 已整合至 BigQuery 不需要再額外設定資料庫連結;
② 廣泛整合至 Google 產品中,例如 Google Analytics 或 Google Cloud 計費儀表板等。


※ 下一個部分來看看資料倉儲 BigQuery 的介紹 ※

source: coursera

張貼留言

0 留言

Close Menu