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

1、背景

2019年1月,伴隨 APACHE FLINK 母公司 Data Artisans 被 收購 ,FLINK 毫無爭議成爲繼 SPARK 以後的新一代大數據計算平臺,本文但願經過 GOOGLE 計算平臺演進來更好的理解 FLINK。git

2、GOOGLE 大數據計算平臺演進

GOOGLE 做爲搜索引擎的頂級公司,須要處理海量數據,其大數據計算平臺的演進是行業的風向標;本文經過 GOOGLE 在該領域發表的論文進行剖析,但願從中提取一些演進的主線。github

2.1 分佈式的三篇經典

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 的設計原理:apache

3、APACHE FLINK 前世此生

根據 Slim Baltagi 的 Unified Batch and Real-Time Stream Processing Using Apache Flink 材料能夠更深刻的理解 FLINK。編程

3.1 場景和需求

Market

從支撐的場景來看,包含 Batch 批處理的腳本語言和應用、Streaming 的流處理、Graph 的圖形處理、以及時下流行的 Machine Learning,並且從應用編程的角度看,採用統一框架支持多種模型,會帶來更好的用戶體驗。api

3.2 架構

Architecture

從架構分層看:架構

  • 存儲是關鍵的數據底座,支持 Files、DataBases、Streams 三種類型。
  • 部署緯度上,提供 Local、Cluster、Cloud 三種模式。
  • 系統層面,實現了 Batch Optimizer 和 Stream Builder。
  • 庫和 API 支撐完善,以批處理的 DataSet 和流處理的 DataStream 支撐豐富的生態。

3.3 技術領先性

Framework

從大數據計算框架演進來看,MapReduce 屬於第一代技術、Tez 屬於第二代技術、Spark 屬於第三代技術、Flink 屬於最新的第四代技術,相比與 Spark 它提供了 Real-Time、Native Iterative Processing 的差別化競爭力。app

Tools

從工具角度看,Storm 提供了第一代、第二代的工具,Spark 提供了第三代的工具,Flink 提供的則是第四代的工具,它以 Streaming 爲核心構建,Batch 只是做爲一種有限數據流。框架

4、總結

根據 GOOGLE 業務演進和開源領域的探索,能夠獲得以下的觀點:分佈式

  • 計算框架融合。隨着大數據分析業務的發展,須要多種計算框架的融合,經過混合調度提升計算資源的利用率。
  • 框架演進能力。計算框架要有不斷演進的能力,特別是隨着如今 Machine Learning 的流行,要能支撐 CPU/GPU/TPU 等異構計算。
  • 極致用戶體驗。針對不一樣的計算模型,採用不一樣的編程模型是一種學習負擔,採用統一的計算編程模型,能夠大大下降用戶的使用難度。

5、參考

  1. Flink HomePage
  2. Beam HomePage
  3. GOOGLE Publication Database
相關文章
相關標籤/搜索