通过 GOOGLE 大数据计算平台演进理解 APACHE FLINK 前世今生
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过 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 等异构计算。
- 极致用户体验。针对不同的计算模型,采用不同的编程模型是一种学习负担,采用统一的计算编程模型,可以大大降低用户的使用难度。
五、参考
以上是关于通过 GOOGLE 大数据计算平台演进理解 APACHE FLINK 前世今生的主要内容,如果未能解决你的问题,请参考以下文章