1. 程式人生 > >通過 GOOGLE 大數據計算平臺演進理解 APACHE FLINK 前世今生

通過 GOOGLE 大數據計算平臺演進理解 APACHE FLINK 前世今生

流行 pos 數據集 robert amp pip nsa ima iter

一、背景

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 等異構計算。
  • 極致用戶體驗。針對不同的計算模型,采用不同的編程模型是一種學習負擔,采用統一的計算編程模型,可以大大降低用戶的使用難度。

五、參考

  1. Flink HomePage
  2. Beam HomePage
  3. GOOGLE Publication Database

通過 GOOGLE 大數據計算平臺演進理解 APACHE FLINK 前世今生