Spark 诞生头十年:Hadoop 由盛转衰,统一数据分析大行其道

2019-12-13    来源:raincent

容器云强势上线!快速搭建集群,上万Linux镜像随意使用

作者:蔡芳芳 来源:InfoQ

2009 年,Spark 诞生于计算机系统的学术圣地加州大学伯克利分校的 AMP Lab,最初是一个研究项目,后来于 2010 年正式开源,并在 2013 年贡献给 Apache 基金会,翌年即毕业成为 Apache 基金会顶级项目。对于一个具有相当技术门槛与复杂度的平台,Spark 从诞生到正式版本成熟,整个过程仅仅花了五年时间。诞生之初,Spark 就致力于提供基于 RDD/DataFrame 的一体化解决方案,将批处理、流处理、SQL、机器学习、图处理等模型统一到一个平台下,并以一致的 API 公开,使得 Spark 在诞生后的十年间得以应用于更加广泛的工程领域,快速成长为大数据处理引擎中的佼佼者。

2019 年是 Spark 诞生的第十个年头,Spark 引擎自身以及它孵化出来的 Spark 生态都在不断迭代和演进。近日Databricks 软件工程师李元健与我们分享了根植于 Spark 各个发展阶段的统一数据分析理念、Spark 社区接下来工作的重点,以及大数据领域需要关注的变化和趋势,以下为采访问答实录。

问:李元健老师您好,非常高兴这次能够在 AICon 现场采访到您。您这次准备的演讲主题是《Databricks 在构建统一数据分析平台上的新一轮实践》,能否先跟我们解释一下,何为“统一数据分析平台”?其中的“统一”包含哪几个层面的含义?

李元健:统一的数据分析平台其实是各大互联网公司和软件公司始终奉行的一套设计准则,不仅植根于 Databricks,我们期望用统一的一套平台解决方案来满足多种场景需求甚至跨场景需求。这个“统一”不仅仅是技术层面的 API、底层抽象的统一,更是某种程度上的上层使用者协作方式的统一。Spark 就是用统一的 RDD/DataFrame API 来配合现有的 Hadoop 生态,构造出来这样一套系统,可以适用于多种环境,让使用者和学习者可以用一套系统完成多样的任务,不需要跨领域学习。

这需要在底层有一个完全统一的抽象,只有在抽象的时候就考虑得足够深,才可能在后续把各种各样的场景完整地串在一起,打破边界,做出全局的优化。但是这个抽象也不能太过,比如做成像 MapReduce 那样最简单的抽象,那上层实现需要做的东西会很多。这中间的难点就是要把握好抽象的度,能让它笼罩的面足够大,同时也要足够小。

在 Spark 诞生之初, Hadoop 作为当时的大数据主流生态,涌现了各种相关的项目:用于批处理的 MapReduce、Pig 和 Hive,用于流处理的 Storm,用于机器学习的 mahout,用于 ETL 的 sqoop。这些产品由不同团队、组织开发,API 设计理念各不相同,使用复杂、集成困难、学习门槛陡、维护成本高。随着 Spark 倡导的统一数据分析理念的发展,Hadoop 各个项目由盛转衰,逐渐被 Spark 的对应项目取而代之。我们相信,无论大数据还是小数据,无论公有云还是私有云,无论批处理还是流处理,无论数据查询还是数据分析,数据分析行业未来将由单一的统一分析引擎主导,并应用于不同的平台解决各式各样的问题

问:为什么需要在上面提到的这几个层面上达成“统一”?

李元健:统一意味着打破多系统边界,数据计算的执行计划将会全局优化,提升了总体的性能,数据不再来回从各系统中搬来搬去,极大降低数据治理、架构设计及运维成本。与此同时,统一也打破了团队之间的边界,大幅提高了协作的效率,跨领域的用户可以在一套系统之下协作完成各项工作。从每个参与者角度来看,统一更意味着学习成本和协作成本的降低。

问:这样一个统一的数据分析平台对于大数据领域来说有什么样的意义?如果业内不只 Databricks 在做统一数据分析平台,其他公司可能也想做自己的统一平台,那最后怎么真正做出一个能打通所有系统的平台呢?

李元健:统一的数据分析平台对降低数据处理成本、加速数据迭代、提升数据价值都有极大的促进作用。Databricks 在业界首先提出统一数据分析平台的理念,并将这一理念在过去若干年付诸于实践,熔铸于 Databricks 产品及参与、主导的开源项目中去。所以我们今日已经可以看到统一数据分析的概念已经逐渐被市场与友商所接受。

接上述回答,其他公司也想做自己的统一平台恰恰也是市场认可的一部分,因为模仿是最好的赞赏,Databricks 也一直持开放的态度欢迎各方的合作与竞争,相信在百花齐放的前提下,市场会筛选出事实标准。

问:Databricks 在很多公开场合多次强调过“统一数据分析平台”的概念,这一点在你们当前的技术架构和主导的开源项目中有哪些体现?

李元健:首当其冲的开源体现是 Apache Spark,Spark 可以说是业界首个达成统一数据分析能力的数据分析平台,对上,支持交互式查询、批处理、流处理、机器学习、图计算等使用场景;对下,支持基本上你能见到的所有数据格式类型,包括 Parquet、Text、Json、ORC 等,同时所有数据源类型,包括流式的 kinesis、Kafka 等 Spark 都能有机地统一起来,不会像原来 Hadoop 那样,把一堆散落的零件丢给用户,让用户自己去拿 MapReduce 拼。2019 年是 Spark 诞生的第 10 个年头,统一数据分析的理念始终植根于 Spark 的各个发展阶段。

随着 Spark 的成功,近几年内 Databricks 主导的全部开源项目,也遵循统一数据分析的理念,让 Spark 可以解决更多的使用场景,扩大使用的用户群体。Koalas 解决了 pandas 的可伸缩性(scalability),让使用单机 pandas 的数据科学家们也可以轻松利用 Spark 解决他们的大数据问题。 Delta Lake 通过其优秀的事务性特点,简化了复杂冗长的数据处理 pipeline 的建造,使得批流一体变得轻而易举,对数据湖的场景提供了完美方案。MLflow 致力于打破机器学习各阶段跨系统的弊端,完成模型训练、特征工程、模型管理的各阶段打通与统一。

问:那么构建统一数据分析平台存在哪些难点?你们在实践中是如何解决这些问题的?

李元健:难点之一在于如何建立一个通用引擎去支持不同需求,让复杂变简单。抽象逻辑的统一及高效实现,比如 Apache Spark 中 RDD 的抽象概念是 Spark 的核心概念。同时这种核心抽象也是在不停迭代的,比如 Apache Spark 1.6 版本之后,实际上新的 Spark 核心抽象迭代为 Dataset API。

Databricks 始终坚持 data driven。这个也是我们公司文化的一个核心价值观。我们通过用户的使用日志做大数据分析,来选择如何改善我们的产品,推出什么新的产品。对于一个初创公司,如何对需求说不,如何在有限的资源里选择最重要的事情是最大的挑战。MLflow、Delta Lake、Koalas 这些系统的诞生均是 data driven。

问:能否请您进一步谈谈 Spark 的基因是什么?和其他的相关项目(比如,Ray)有什么不同?您预期 Spark 主流地位可能会在未来什么时候受到威胁?

李元健:Spark 来自学术圈,诞生于加州大学伯克利分校。这所学校对计算机学科和工业界的贡献相当之大,尤其是操作系统和数据库这些方向。在 Spark 初期的设计和技术讨论氛围非常浓厚,算是学术血统相当纯正,后来加入 Apache 基金会后,工业界的各大公司参与了各方面的研发,做出了大大小小的贡献。因此,Spark 的基因也在不断地优化,混入了更多工业圈研发基础设施软件的经验和风格,产品渐渐趋于成熟和稳定。而 Ray 其实算是 Spark 的姐妹项目,都是出自于 Ion 教授的实验室。如今,Ray 还处于早期研发阶段,工业界的参与还是相对比较少,将来的普及和成熟都言之尚早。

建立数据分析的统一平台是创建 Spark 最初的一个方向和目标。如今,Spark SQL 作为新一代的 Spark Core。我们相信我们可以通过同一套执行引擎解决各种计算和分析的需求,并且可以跨多个不同的用户场景做全局优化。这个信念是从始至终在贯彻的。渐渐地,其他类似项目也都在追随我们这个目标,甚至使用同一套术语在宣传,这种认同,我们倍感欣慰。

事实也证明,Spark 很好地解决了 Hadoop 生态系统分裂的难题。Hadoop 生态圈越来越复杂,用户体验差,很多项目立项但是无法投产,更无法快速产生商业价值。而 Spark 通过构建一个统一数据分析平台来填平各系统间的使用鸿沟,让大数据问题变得简单,让更多的公司和机构从大数据中获益,也改变了我们每个人的日常工作和生活。

从目前的发展情况来看,我们看到大数据产业链里有不少优秀的产品在不断发力,通过新的硬件加速,或者提供更加丰富的功能来更好地解决某个细分领域问题。但是,作为数据的统一分析和处理平台,十年前 Spark 的发明在很多场景逐渐取代了 Hadoop 计算层,未来若干年间,也随时有可能有其他优秀项目出现并试图取代或部分取代 Spark。此外,现在的系统集成度和兼容性要求都很高,完全取代一整个生态的难度相当大。Spark 也只是取代了 Hadoop 的 MapReduce 计算层,对生态中的其他组件仍然是兼容并蓄。而且即便是取代单一组件,如果没有 10x 的差异、不能推动关键的新型使用场景,极难推动现有用户迁移。

Databricks 本身是一个强调持续创新的公司,我们致力于自己革新自己,这也是 Delta 、Koalas、 MLflow 等新近开源项目逐渐涌现的主要原因。当然我们期望能有更革命性的东西出现,不管是来自 Spark 社区,还是来自 Databricks 公司,还是来自其他团队。

问:对于刚刚发布的 Apache Spark 3.0 预览版,很多开发者非常感兴趣。能否请您给我们解读一下,3.0 版本中有哪些与统一数据分析相关的重要特性?

李元健:Spark SQL 作为新一代 Spark 的核心抽象,3.0 中涉及众多 SQL 层的性能提升,比如 Dynamic Partition Pruning 以及社区内呼声很高的 Adaptive Execution,SQL 层的性能提升可以辐射到 Spark 的各个上层组件。

调度层面,Apache Spark 3.0 新增 GPU 这种加速器的资源调度,并且逐步完善了 Spark on K8s。

另外,Data Source API 以及新的 catalog 支持可以让 Spark 更好的接入各种数据源提供统一的计算和更准确的分析结果,是统一数据分析的最好体现。

当然,这里只能列举一小部分,Spark 3.0 解决了近 3000 个问题。我们在 release notes 里面会有更多的描述,欢迎大家去试用我们 3.0 的第一个预览版本。

问:有读者反馈在 Spark 3.0 的预览版中好像没有看到多少 Streaming/Structed Streaming 相关的 ISSUE,能否解释一下这是为什么?

李元健:如之前介绍,Spark SQL 作为新的 Spark 核心抽象,所有 SQL 层的迭代都可以体现在 Structure Streaming 之上。同时,Databricks 对于流式计算领域的战略可以理解为 Structure Streaming+Delta Lake=New Spark Streaming,解决了流处理的数据一致性问题。所以 Delta Lake 本身就是 Structed Streaming 的一部分。此外,Delta Lake 作为独立的开源项目与 Spark Structure Streaming 和 Spark SQL 集成,提出了全新的一套 Delta Lake 架构,来取代当前最流行的 Lambda 架构。具体的 feature 层面,我们会有全新的 Streaming UI,会有新的 data source API 去支持流入流出。

InfoQ:接下来 Databricks 和社区对于 Spark 还有哪些规划?接下来有哪些方向是 Spark 社区会重点关注或重点去做的?

李元健:首先需要强调,Apache Spark 的开发是由社区驱动的,Databricks 只是 Spark 的主要贡献者。虽然从 Databricks 成长出了大量的 Committer,但是社区不应该由任何一家公司控制,任何所谓的控制都是违反 Apache 开源精神的。所有 Spark 的重要 feature 以及关键的点都是由社区的需求驱动的。到目前为止 Spark 已经有十年的历史了,全世界大大小小的公司和组织都在使用和贡献。Spark 社区的多元化和活跃度是有目共睹的,来自全世界的贡献也驱动着 Spark 去解决不同使用场景中的相关问题。Spark 的 committer 来自于超过三十家公司和机构,有 IT 巨头 Apple、Google、Facebook 等;有特定行业的领导者,Nvidia、Netflix、Uber、Linkedin、eBay 等;也有独角兽级别的创业公司,Databricks、Stripe 等;还有顶尖院校,比如加州伯克利大学、斯坦福大学、普林斯顿大学;当然也有国内的 IT 大厂,比如阿里、腾讯、华为和京东。大量用户和社区的 committers 每天在报问题、报需求,提出自己的想法和解决方案。Databricks 作为主要的贡献者,我们会继续朝着统一分析平台的方向发展,去更好地解决更多用户场景问题,提升用户体验,增加用户基数。

说回 Spark 社区接下来的几个主要的发力点,Spark 的成长方向始终就是两条线,一个是 Spark 自身引擎的迭代,另外一个是借助 Spark 孵化出来的 Spark 生态。首先是 SQL 的不断演化,目前 Apache Spark 3.0 发布的一系列工作还在推进当中,大家可能看到的,比方说 DataSource API,比方说 ANSI SQL 的一系列的标准,都还在进行当中,这是对 Spark Core 持续不断的优化。另外 Spark 从技术上还会生长出新的东西,这个大家也可以期待一系列新的场景和融合。Spark 周边生态的构建也是重点,相信我这次分享里着重介绍的 Koalas 及 Delta Lake 就是很好的例子。随着 Data Source API 的不断完善,我们相信 Spark 生态圈会进一步地扩展和加强。未来 Databricks 也会全力去完善 Spark 生态版图,继续保持 Spark 在数据处理和分析的领先优势。

问:如果请您回顾大数据领域过去这一年,您认为有哪些进展和变化值得一提?

李元健:云的力量已经完全不可忽视了,云化进程一直在持续往前推进,无论是从技术上还是商业上,都能看到 2019 年全年整个领域对于云化的需求的不断增长。与 2018 年头部三大云厂商增长 50% 不同的是,2019 年增长的主角开始从头部的大的云厂商开始向小规模公司、初创公司转移,Databricks 也是其中的一员。在商业的刺激下,云化技术如 K8s 及云化生态持续蓬勃发展。大公司现在也变得越来越 Open,不会什么都想把控在自己手里,而是更愿意和小公司联合,比如 Databricks 和 Azure、AWS 等一系列云厂商都有合作关系。

大数据领域这一年是多事之秋。Hadoop 在不断萎缩,从 Hadoop 的三个发行商市值蒸发的速度就能看出。但相反,Databricks 这一年获得两轮融资,估值大幅提升到 62 亿美金。这种反差恰恰说明市场对 Unified Analytics Platform + Open Source + Cloud + AI 的肯定。大数据和小数据的边界会越来越模糊,客户需要的是一个统一的分析平台,解决实际的数据处理和分析问题。随着数据急剧增长,未来数据存储和处理都会逐渐迁移到更廉价的公有云,让资源更合理的集中弹性调配。如何快速从数据中挖掘出信息来改善决策是重点。

问:未来大数据领域还有哪些重要的技术方向或趋势值得关注?

李元健:个人认为有一项趋势已经持续了数年,就是多个数据分析领域的融合,包括传统数据库、分布式计算以及检索技术,这种趋势也促成了统一分析理念的形成。虽然目前有数量繁多的新框架、引擎,但大家能够注意到,数据管理能力依旧没有跟上数据爆炸式增长的速度。所以在这种融合趋势的推动下,立足于新的场景,原有的很多理念和设计会重新焕发光彩,举个实际例子,Delta Lake 本身就是最典型的例子,Delta Lake 最核心的 ACID 支持就是传统数据库的基本功能,但 Delta Lake 基于 Spark 上的 ACID Table 解决了大量痛点,很快成为关注度极高的开源项目。

我刚才没有提到 Databricks 的一个拳产品,就是 MLflow,我们下一步希望融合的场景就是在智能计算,以及 AI 领域。如果我们把整个 AI 看作火箭,大数据是其中的发动机,我们如何能让发动机的设计和火箭的设计一体化,在这个过程当中,我们能做的东西还有很多。大数据和 AI 当前的状态其实多少有些割裂,就像一个公司的算法工程师和数据工程师一样,现在还是分置的两块,如何进一步融合,也许会是一个新的蓝海。

此外,未来公有云是数据处理和分析的最佳平台,所以云原生的解决方案是趋势也是重点。比如,如何在 pay as you go 这种收费模式下,基于数据来驱动开发、定价和决策;如何提供 Serverless 的服务,在软件架构、交付和部署上做创新;如何打破现有的大数据框架,去更好与现有的云计算服务融合,提升用户的使用体验等。

嘉宾介绍:

李元健,Databricks 软件工程师。曾于 2011 年加入百度基础架构部,先后参与百度自研流式计算、分布式 Tracing 及批量计算系统的研发工作,2017 年转岗项目经理,负责百度分布式计算平台研发工作。2019 年加入 Databricks Spark 团队,参与开源软件及 Databricks 产品研发。

标签: 大数据 大数据时代 大数据概念 网络大数据 网络数据与 

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:数据科学家需要知道的5种图算法

下一篇:统计学概论和医疗临床大数据分析