關於Apache Flink的那些子專案,你瞭解多少?
提到實時計算或者流計算,我們很自然地會想到Flink。如今,Flink已成為實時計算的事實標準,很多大型網際網路企業的實時推薦、實時ETL、實時數倉、實時風控等場景,也都是基於Apache Flink加各種開源的OLAP引擎構建。那麼,Flink到底是如何以Pipeline(管道)的模式,完成實時業務場景支撐的呢?本文將對Apache Flink幾個子專案進行彙總!
1、 Flink CDC 資料整合
Flink CDC是Apache Flink的一個重要元件,是一款非常優秀的流處理引擎。廣義概念上,只要是能夠捕獲資料變更的技術,都可以成為是CDC。目前通常描述的CDC技術主要面向資料庫的變更,是一種用於捕獲資料庫中資料變更的技術。CDC的應用非常廣泛,支援從 MySQL、MariaDB、RDS MySQL等資料庫中實時地讀取存量歷史資料和增量變更資料,整個過程提供 exactly-once 語義保證。
作為新一代資料整合框架,Flink CDC可以看做是資料從源頭連線到資料倉儲的管道,可遮蔽一切複雜問題,讓使用者專注於資料分析,包括資料遷移、資料分發、資料採集等。Flink CDC 同時提供了 SQL API 和 DataStream API 兩套 API,很好地滿足了不同開發者的需求。
Flink CDC 既可以替代傳統的 DataX 和 Canal 工具做實時資料同步,將資料庫的全量和增量資料一體化地同步到訊息佇列和資料倉儲中;也可以做實時資料整合,將資料庫資料實時入湖入倉;同時還支援強大的資料加工能力,可以透過 SQL 對資料庫資料做實時關聯、打寬、聚合,並將物化結果寫入到各種儲存中。相對於其他資料整合框架,Flink CDC 具有全增量一體化、無鎖讀取、併發讀取、分散式架構等技術優勢,因此在開源社群中非常受歡迎。
2、Flink SQL資料分析
Flink能快速發展,和Flink SQL的誕生息息相關。最早,Flink雖然有著自身技術的先進性,但很多企業無法使用,學習成本高。有了Flink SQL以後,使用者可以基於熟悉的SQL語義使用Flink。
準確來講,Flink SQL是Flink 實時計算為簡化計算模型、降低使用者使用實時計算門檻而設計的一套符合標準 SQL 語義的開發語言。 自 2015 年開始,阿里巴巴開始調研開源流計算引擎,最終決定基於 Flink 打造新一代計算引擎,針對 Flink 存在的不足進行最佳化和改進,並且在 2019 年初將最終程式碼開源,也就是很多人熟悉的Blink。Blink在原來的 Flink 基礎上最重要的一個貢獻就是實現了Flink SQL 。
在傳統的流式計算領域,比如 Storm、Spark Streaming 都會提供一些 Function 或者 Datastream API,使用者透過 Java 或 Scala 寫業務邏輯,這種方式雖然靈活,但有一些不足,比如具備一定門檻且調優較難,隨著版本的不斷更新,API 也出現了很多不相容的地方。此種背景下,Flink SQL成為優選,不同行業和領域的人都熟悉,學習成本較低,使用者只要表達清楚需求即可,不需要了解具體做法。
3、 Flink ML機器學習
Apache Flink的機器學習庫稱為Flink ML。由於過去五年來機器學習的使用呈指數增長,因此Flink社群決定將這種機器學習APO也新增到其生態系統中。在FlinkML中,貢獻者和演算法的列表正在增加。
具體而言,開發團隊重構了Flink ML早期的函式庫,擴充套件Flink ML API並更新Runtime主要功能,比如:開始支援多輸入和多輸出,和新增流媒體批次統一函式庫等。另外,Flink ML新增了5個演算法例項,包括對數機率迴歸、k-means、K-近鄰演算法、單純貝氏分類器以及One-hot編碼器,除了加入新的演算法外,官方也會持續進行壓力測試和最佳化,確保演算法的效能。
傳統的Estimator/Transformer正規化,並不提供API以流媒體的方式暴露模型資料,因此使用者就許要反覆呼叫fit來更新模型資料,官方表示,使用者雖然可以每隔數分鐘更新一次模型資料,但是這種方法效率非常差。而新版本中提供了getModelData API,供使用者將資料模型即時傳輸到網頁伺服器,並使用最新的模型資料進行線上推理,這項功能可以明顯強化Flink ML的線上學習應用能力。目前,Flink ML已成為Apache Flink流媒體處理框架的一部分,提供機器學習API和基礎設施函式庫,能夠簡化機器學習工作管線構建工作。
4、 Flink CEP規則引擎
CEP 是複雜事件處理(Complex Event Process,簡稱CEP)的縮寫,主要用來檢測無盡資料流中的複雜模式,擁有從不同的資料行中辨識查詢模式的能力。模式匹配是複雜事件處理的一個強大援助。
CEP 本身並沒有脫離實時計算的範疇,所以絕大部分使用者還是選擇基於 Flink,或者已有的計算服務上去搭建相關的框架,CEP 對應的功能更多是以 library 的形式存在。對於大多數 CEP 的應用場景而言,“複雜規則”的制定者通常是運營、商家、市場等非技術同學,對於大多數 CEP 的業務效果而言,通常是短時間內直接觸達使用者。
Flink CEP是基於Flink Runtime構建的實時資料規則引擎,擅長解決跨事件的匹配問題。如:結合了時序的上下文風控場景,識別了作弊的行為序列後,給「先做 xx,後做 xx,再做 xx」的使用者進行封禁;結合了否定語義的電商營銷場景,給「瀏覽商品後 10 分鐘未下單的使用者」傳送優惠券。
5、 Flink Table Store動態表儲存
作為Apache Flink 的一個子專案,Flink Table Store 是Flink在推動流批一體演進中儲存領域上的重要一環。
Flink 在 Table API 和 SQL 中提出了動態表的概念,跟 Hive 表在離線數倉中間層的作用類似,動態表是實時資料倉儲的中間層。動態表中資料是隨時間變化的,而靜態表只能包含離線處理的資料。我們可以將實時計算看成對動態表上變更資料的處理,將離線計算看成對動態表某個時間快照的處理。使用者可以像查詢批處理表一樣查詢動態表,對動態表的查詢將生成一個不會停止的連續查詢,並且不斷更新下游的結果表,以反映輸入動態表上的更改,這構成了實時數倉的基本鏈路。本質上,動態表上的連續查詢非常類似於定義物化檢視的查詢。
整體來說, Flink Table Store是解決存算分離、儲存統一的重要元件。Flink Table Store是一個流批統一的儲存,能提供一定的 OLAP 查詢能力(基於列式儲存),可做到毫秒級別的實時流式讀取,能夠支援 Insert Overwrite。同時,Flink Table Store也是最為完善的 Flink Connector,支援 Flink SQL 的全部概念,支援任意 Flink Job 的輸出,支援所有資料型別。更重要的是,還能夠結合 Flink SQL 提供 DB 級別的體驗,並且支援大規模更新。
2022年,Apache Flink已經更新到1.16版,有了諸多更新,包括:分散式一致性快照架構升級、創新流批自適應融合 Shuffle、基於非同步與快取技術的流式 SQL維表Join 改進、完整相容 Hive 生態、PyFlink 功能及效能全面生產可用等。針對社群基於 DataStream API 重新建設的Flink ML,目前已經發布了兩個版本。另外,在Streaming Data Warehouse 流式數倉方面的探索,也是值得重點關注的方向。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31547898/viewspace-2925753/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於Synchronized你瞭解多少?synchronized
- 關於繼承,你瞭解多少?繼承
- 關於區塊鏈你瞭解多少區塊鏈
- 面試-關於Http協議你瞭解多少,有多少說多少面試HTTP協議
- 關於資料中心方面的專業名詞,你瞭解多少?
- 關於Linux知識你瞭解多少呢?Linux
- 關於Mysql資料儲存,你瞭解多少?MySql
- 關於Linux你瞭解多少?Linux由來!Linux
- 關於Linux你瞭解多少?Linux由來Linux
- 關於新媒體運營崗位,你瞭解多少?
- HTTP專業術語,你瞭解多少?HTTP
- 關於Linux系統和Windows系統你瞭解多少?LinuxWindows
- 關於銀行系統專項測試,你瞭解多少?學習一下
- 關於相親原始碼的監控系統搭建,你瞭解多少?原始碼
- 你對那些電影中的黑化人工智慧瞭解多少?人工智慧
- 微火資訊:共享WiFi專案是什麼,如何盈利你瞭解多少?WiFi
- .NET中的字串你瞭解多少?字串
- 你對position的瞭解有多少?
- 【前端幫幫忙】第5期 關於CSS權重,你瞭解多少?前端CSS
- 直播系統開發中關於開發環境你瞭解多少?開發環境
- Apache 子專案 概述Apache
- 當紅“Serverless”,你瞭解多少?Server
- java異常你瞭解多少Java
- 對於網校系統原始碼,你瞭解多少?原始碼
- 關於MongoDB複製,你瞭解多少(附副本集常見任務教程)MongoDB
- 網站總被劫持?關於DNS快取中毒你究竟瞭解多少網站DNS快取
- 常見Web技術之間的關係,你瞭解多少?Web
- 直流負載的案例,你瞭解多少?負載
- 【入門知識】關於Linux系統和Windows系統你瞭解多少?LinuxWindows
- 【Spring註解驅動開發】關於BeanPostProcessor後置處理器,你瞭解多少?SpringBean
- Java String 物件,你瞭解多少?Java物件
- 抽象類和介面,你瞭解多少?抽象
- 關於電子遊戲,那些被人們誤解的事實遊戲
- 面試必問的volatile,你瞭解多少?面試
- Python 的技巧和方法你瞭解多少?Python
- 對Docker的瞭解,你能讀懂多少?Docker
- 對於前端安全,你瞭解多少?說說你對XSS和CSRF的理解前端
- 帶你瞭解代理 IP 那些事