通過 GOOGLE 大數據計算平臺演進理解 APACHE FLINK 前世今生
2019年1月,伴隨 APACHE FLINK 母公司 Data Artisans 被 收購 ,FLINK 毫無爭議成為繼 SPARK 之後的新一代大數據計算平臺,本文希望通過 GOOGLE 計算平臺演進來更好的理解 FLINK。
二、GOOGLE 大數據計算平臺演進
GOOGLE 作為搜索引擎的頂級公司,需要處理海量數據,其大數據計算平臺的演進是行業的風向標;本文通過 GOOGLE 在該領域發表的論文進行剖析,希望從中提取一些演進的主線。
2.1 分布式的三篇經典
- 2003年,[The Google File System: a scalable distributed file system for large distributed data-intensive applications](The Google File System)。大規模分布式文件系統,提供數據存儲的公共平臺。
- 2004年,MapReduce: Simplified Data Processing on Large Clusters。大規模集群的數據處理框架,提供了海量數據分析的計算框架,Apache Hadoop 基於此論文構建了開源領域的第一代大數據處理框架。
- 2006年,Bigtable: A Distributed Storage System for Structured Data。分布式結構化數據存儲,是 NOSQL 的先驅。
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)。 由此可見,大數據計算框架必然和數據庫領域技術進行碰撞,也會引入新的觀點和方向。
2.2 計算框架技術演進
計算框架論文 | 簡介 | 發表時間 | 第一作者 |
---|---|---|---|
並行數據分析 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 的設計原理:
- Streaming 101: The world beyond batch. A high-level tour of modern data-processing concepts 。
- Streaming 102: The world beyond batch. The what, where, when, and how of unbounded data processin 。
三、APACHE FLINK 前世今生
根據 Slim Baltagi 的 Unified Batch and Real-Time Stream Processing Using Apache Flink 材料可以更深入的理解 FLINK。
3.1 場景和需求
從支撐的場景來看,包含 Batch 批處理的腳本語言和應用、Streaming 的流處理、Graph 的圖形處理、以及時下流行的 Machine Learning,而且從應用編程的角度看,采用統一框架支持多種模型,會帶來更好的用戶體驗。
3.2 架構
從架構分層看:
- 存儲是關鍵的數據底座,支持 Files、DataBases、Streams 三種類型。
- 部署緯度上,提供 Local、Cluster、Cloud 三種模式。
- 系統層面,實現了 Batch Optimizer 和 Stream Builder。
- 庫和 API 支撐完善,以批處理的 DataSet 和流處理的 DataStream 支撐豐富的生態。
3.3 技術領先性
從大數據計算框架演進來看,MapReduce 屬於第一代技術、Tez 屬於第二代技術、Spark 屬於第三代技術、Flink 屬於最新的第四代技術,相比與 Spark 它提供了 Real-Time、Native Iterative Processing 的差異化競爭力。
從工具角度看,Storm 提供了第一代、第二代的工具,Spark 提供了第三代的工具,Flink 提供的則是第四代的工具,它以 Streaming 為核心構建,Batch 只是作為一種有限數據流。
四、總結
根據 GOOGLE 業務演進和開源領域的探索,可以得到如下的觀點:
- 計算框架融合。隨著大數據分析業務的發展,需要多種計算框架的融合,通過混合調度提高計算資源的利用率。
- 框架演進能力。計算框架要有不斷演進的能力,特別是隨著現在 Machine Learning 的流行,要能支撐 CPU/GPU/TPU 等異構計算。
- 極致用戶體驗。針對不同的計算模型,采用不同的編程模型是一種學習負擔,采用統一的計算編程模型,可以大大降低用戶的使用難度。
五、參考
- Flink HomePage
- Beam HomePage
- GOOGLE Publication Database
通過 GOOGLE 大數據計算平臺演進理解 APACHE FLINK 前世今生