在大數據處理計算領域,有離線計算和實時計算兩種模式。一直以來, 我們都是用mapreduce / hive / sparkSQL來處理離線場景,用 sparkStreaming / flink處理實時場景,但是這種lambda架構會導致一個問題:進行更改時要同時更改兩套代碼,進行同步。
flink流批一體橫空處理,為大數據處理帶來了一套新的解決方案。
今年雙11,Flink流批一體開始在阿里最核心的數據業務場景嶄露頭角,並扛住了40億/秒的實時計算峰值。
其實流批一體的技術里面最早提出於2015年,它的初衷是讓大數據開發人員能夠用同一套接口實現大數據的流計算和批計算,進而保證處理過程與結果的一致性。spark、flink都陸續提出了自己的解決方案。雖然spark是最早提出流批一體理念的計算引擎之一,但其本質還是用批來實現流,用的是微批次的思想,有秒級的延遲,而且無法正確處理時間語義(數據在分布式傳輸過程中順序發生改變,先生產的數據反而后到,導致計算不准確的一種現象),所以難以滿足復雜、大規模的實時計算場景,遲遲無法落地。而2019年阿里收購flink后,投入大量研發力量,同時公司也面臨離線和實時數據統計口徑不一致的問題,影響廣告、商務甚至是公司的運行決策,業務的迫切要求,技術力量的不斷加入,都促進了flink向流批一體的發展。
阿里搜索推薦業務、
flink 流批一體API、Runtime運行時、FlinkSQL
DataStream流計算, DataSet批處理,新引入 DAG API,流批一體調度器、可插拔shuffle插件等
flinkSQL學習成本低,上手快,能夠解決大部分場景,但不夠靈活,這時可以使用DataSteam API,但是DataStream對批處理支持不太好。