2019年1月,伴隨 APACHE FLINK 母公司 Data Artisans 被 收購 ,FLINK 毫無爭議成爲繼 SPARK 以後的新一代大數據計算平臺,本文但願經過 GOOGLE 計算平臺演進來更好的理解 FLINK。git
GOOGLE 做爲搜索引擎的頂級公司,須要處理海量數據,其大數據計算平臺的演進是行業的風向標;本文經過 GOOGLE 在該領域發表的論文進行剖析,但願從中提取一些演進的主線。github
MapReduce 發佈後聲名鵲起,不過在將來的技術發展中也受到了來自數據庫領域大牛的挑戰。2008年,數據庫大牛 David DeWitt 發表 MapReduce: A major step backwards ,反饋 MapReduce 是數據庫領域的技術倒退;2010年,GOOGLE 大神及論文做者 Jeffrey Dean 和 Sanjay Ghemawat 發表文章 MapReduce: A Flexible Data Processing Tool ,對比了 Parallel Databases 和 MapReduce, 並強調了 MapReduce 的場景和優點;同年,圖靈獎得到者 Michael Stonebraker 與一幫數據庫牛人發表 MapReduce and Parallel DBMSs: Friends or Foes ,認爲 MapReduce 更像是一種 ETL(Extract Transform Load)。 因而可知,大數據計算框架必然和數據庫領域技術進行碰撞,也會引入新的觀點和方向。數據庫
計算框架論文 | 簡介 | 發表時間 | 主要做者 |
---|---|---|---|
並行數據分析 Sawzall | Interpreting the data: Parallel analysis with Sawzall | 2005 | Rob Pike, Sean Dorward, Robert Griesemer and Sean Quinlan |
並行數據處理流水線 FlumeJava | Easy, Efficient Data-Parallel Pipelines | 2010 | Craig Chambers, Ashish Raniwala, Frances Perry, etc. |
圖處理 Pregel | A System for Large-Scale Graph Processing | 2010 | Grzegorz Malewicz, Matthew H. Austern, Aart J. C. Bik, etc. |
交互式數據分析 Dremel | Interactive Analysis of Web-Scale Datasets | 2010 | Sergey Melnik, Andrey Gubarev, Jing Jing Long, etc. |
基於 MR 的 SQL Tenzing | A SQL Implementation On The MapReduce Framework | 2011 | Biswapesh Chattopadhyay, Liang Lin, Weiran Liu, etc. |
大規模數據增量處理 Percolator | Large-scale Incremental Processing Using Distributed Transactions and Notifications | 2011 | Daniel Peng, Frank Dabek |
高效列存 PowerDrill | Processing a Trillion Cells per Mouse Click | 2012 | Alexander Hall, Olaf Bachmann, Robert Bussow, etc. |
流處理框架 MillWheel | Fault-Tolerant Stream Processing at Internet Scale | 2013 | Tyler Akidau, Alex Balikov, Kaya Bekiroglu, etc. |
近實時數據倉庫 Mesa | Geo-Replicated, Near Real-Time, Scalable Data Warehousing | 2014 | Ashish Gupta, Fan Yang, Jason Govig, etc. |
大規模實時/離線數據分析 Dataflow | A Practical Approach to Balancing Correctness, Latency, and Cost in Massive-Scale, Unbounded, Out-of-Order Data Processing | 2015 | Tyler Akidau, Robert Bradshaw, Craig Chambers, etc. |
支撐廣告業務的交互式報表 Shasta | Interactive Reporting At Scale | 2016 | Gokul Nath Babu Manoharan, Stephan Ellner, Karl Schnaitterα, etc. |
數據集組織 Goods | Organizing Google’s Datasets | 2016 | Alon Halevy, Flip Korn, Natalya F. Noy, etc. |
其中, Dataflow 基於 MapReduce (批處理框架), FlumeJava (並行數據處理流水線 ) 和 MillWheel (流處理框架) 技術演進而來,是大數據計算框架的融合。Dataflow 和 Beam 是 比 Spark 更新的技術,能夠經過以下文章深刻掌握 Dataflow 的設計原理:apache
根據 Slim Baltagi 的 Unified Batch and Real-Time Stream Processing Using Apache Flink 材料能夠更深刻的理解 FLINK。編程
從支撐的場景來看,包含 Batch 批處理的腳本語言和應用、Streaming 的流處理、Graph 的圖形處理、以及時下流行的 Machine Learning,並且從應用編程的角度看,採用統一框架支持多種模型,會帶來更好的用戶體驗。api
從架構分層看:架構
從大數據計算框架演進來看,MapReduce 屬於第一代技術、Tez 屬於第二代技術、Spark 屬於第三代技術、Flink 屬於最新的第四代技術,相比與 Spark 它提供了 Real-Time、Native Iterative Processing 的差別化競爭力。app
從工具角度看,Storm 提供了第一代、第二代的工具,Spark 提供了第三代的工具,Flink 提供的則是第四代的工具,它以 Streaming 爲核心構建,Batch 只是做爲一種有限數據流。框架
根據 GOOGLE 業務演進和開源領域的探索,能夠獲得以下的觀點:分佈式