知乎-用Flink取代Spark Streaming!知乎實時數倉架構演進[筆記]

知乎的實時數倉實踐以及架構的演進:

  • 實時數倉 1.0 版本,主題:ETL 邏輯實時化,技術方案:Spark Streaming。
  • 實時數倉 2.0 版本,主題:數據分層,指標計算實時化,技術方案:Flink Streaming。
  • 實時數倉未來展望:Streaming SQL 平臺化,元信息管理系統化,結果驗收自動化。

關於選型:

1.0

2016 年年初,業界用的比較多的實時計算框架有 Storm 和 Spark Streaming。Storm 是純流式框架,Spark Streaming 用 Micro Batch 模擬流式計算,前者比後者更實時,後者比前者吞吐量大且生態系統更完善,考慮到知乎的日誌量以及初期對實時性的要求,我們選擇了 Spark Streaming 作爲實時數據的處理框架。

2.0

Flink 相比 Spark Streaming 有更明顯的優勢,主要體現在:低延遲、Exactly-once 語義支持、Streaming SQL 支持、狀態管理、豐富的時間類型和窗口計算、CEP 支持等。

Flink 的 Streaming SQL 有以下優點:易於平臺化、開發效率高、維度成本低等。

目前 Streaming SQL 使用起來也有一些缺陷:1. 語法和 Hive SQL 有一定區別,初使用時需要適應;

2.UDF 不如 Hive 豐富,寫 UDF 的頻率高於 Hive。

未來進一步提升方向:

  • 1.Streaming SQL 平臺化。目前 Streaming SQL 任務是以代碼開發 maven 打包的方式提交任務,開發成本高,後期隨着 Streaming SQL 平臺的上線,實時數倉的開發方式也會由 Jar 包轉變爲 SQL 文件。
  • 2.實時數據元信息管理系統化。對數倉元信息的管理可以大幅度降低使用數據的成本,離線數倉的元信息管理已經基本完善,實時數倉的元信息管理纔剛剛開始。
  • 3.實時數倉結果驗收自動化。對實時結果的驗收只能藉助與離線數據指標對比的方式,以 Hive 和 Kafka 數據源爲例,分別執行 Hive SQL 和 Flink SQL,統計結果並對比是否一致實現實時結果驗收的自動化。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章