為了深入落實國家大數據戰略,推動大數據產業交流與合作,展示我國大數據產業最新發展成果,2019年6月4日至5日,由中國信息通信研究院、中國通信標準化協會主辦,大數據技術標準推進委員會承辦的2019大數據產業峰會在北京國際會議中心隆重舉辦。
會上,來自工業和信息化部的領導,我國眾多優秀大數據領域服務商、行業應用客戶、研究機構、地方大數據主管機構的領導和專家,將對大數據政策、產業、技術的現狀與趨勢等內容進行交流探討。
6月5日,在大數據前沿技術分論壇上,阿里云實時計算產品經理郭華為我們帶來了《從Flink看大數據實時變化》的精彩演講。
阿里云實時計算產品經理郭華
大家好,非常高興來到這邊,我來自阿里云的郭華,今天的題目是《從Flink看大數據實時化》。
講到Flink或者大數據實時化一般講到的是流處理系統,今天的主題圍繞這三個方面進行展開:流處理概述、流處理一般應用架構、流處理應用場景。
首先從實時性、易用性方面看一下開源大數據引擎這十幾年的簡單歷史,我們都知道開源大數據引擎實際上理論上起源于04年谷歌發表的那篇MapReduce的論文,06年的Hadoop基本上完整實現了論文里描述的當時的系統叫做MapReduce,但是MapReduce在實時性、易用性上都有問題,實時中把大量中間數據放到硬盤中去導致雖然具備大批量的數據處理能力,但是它的數據是比較慢的。另外在易用性方面,只提供了MapReduce,這意味著都必須拆解成Map和、Reduce兩個階段,這意味著一系列的都需要MapReduce串聯起來進行調度非常的繁瑣。08年facebook啟動了一個ladoop項目,大家知道SQL是一個使用門檻非常低的語言,把SQL提交給hive,其實hive是大大降低了MapReduce的應用門檻,所以Hadoop和hive還是標準化的解決方案。05年Spark出現了,在實時性、易用性上都有改變。從實時性上講,這是Spark最大的亮點,設置了基于內存中間數據,通過這種形式大大加速了批處理內容,從易用性方面提供了RDD的數據抽象,在此基礎上提供了非常多的算子,還有了更高的表達靈活度。但是Spark雖然說加速了MapReduce的計算過程,但還不是大數據實時化的系統,真正的流處理是11年研究的。當時它的作者經常處理來自消息隊列的數據,這時候他想既然數據是一條條過來的,為什么計算不能一條條處理?在這種思路影響下開發了Storm引擎。Storm也比較成功但是還是初級的引擎,14年的Flink是比Storm成熟的。Storm可以做到至少處理一次,而Flink能夠做到確保只處理一次,同時是沒有中間階段的,Flink是有自己的中間狀態存儲的,所以直接可以在里面進行統計。另外Flink在這個基礎上又提供了更高級別的窗口以及更高層次的API、SQL等等,另外Flink除了流處理之外還在流處理基礎上又封裝了一層批處理引擎,所以我們說Flink叫下一代的大數據引擎,是因為它完整的具備了流和批的處理能力。
從這個版本里面來看,開源大數據的計算引擎主要通過實時性和易用性兩個方面演進的,免備案主機,實時性從最開始基于硬盤的批處理、基于內存的批處理、實時的流處理,易用性上從MapReduce到RDD到bolt到了SQL,這是一個簡單的歷史。
剛才說Storm那種起訴的批處理不是實時化,流處理才是。什么是實時化?是一個事件從發生到把結果發出去的延遲,從這個結果來看批處理,假設有一堆數據,這時候有個需求開發了一個作業,這個作業提交之后把那些數據都讀過來進行處理,處理完之后把結果發出去,所以在這種情況下它的延遲是比較高的。具體體現在兩個方面:第一,它是由計算驅動的,而計算往往是由調度器發起的,調度器和事件發生本身是沒有直接關系的;另外,它每次處理是個全量的處理,把所有數據都撈進來進行計算,計算本身也是比較耗時的。這兩種計算影響下延遲是比較高的,基本上是小時級別的延遲。
再看一下流處理,流處理整個模型是不一樣的,流處理里面數據是沒有終結數概念的,會假設數據源源不斷流進來。寫個作業提交以后,作業也不會停止。同樣從那兩個角度來看,首先是由事件驅動的,只要有事件觸發計算就會自動進行,這個延遲比較低;另一個它是一個增量的計算,意味著每次只處理一小部分數據,計算過程本身也比較難。綜合這兩方面,流處理能夠做到秒級亞秒級的延遲,所以叫做大數據實時化的引擎。
流處理一般的應用架構,如圖是個非常抽象的應用架構,有兩個關鍵點:
1、消息隊列;
2、流計算數據。