首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

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

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

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

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

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

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

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

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

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

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

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

InfoQ: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致力于打破机器学习各阶段跨系统的弊端,完成模型训练、特征工程、模型管理的各阶段打通与统一。

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

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

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

InfoQ:能否请您进一步谈谈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公司,还是来自其他团队。

InfoQ:对于刚刚发布的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的第一个预览版本。

InfoQ:有读者反馈在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在数据处理和分析的领先优势。

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

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

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

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

李元健:个人认为有一项趋势已经持续了数年,就是多个数据分析领域的融合,包括传统数据库、分布式计算以及检索技术,这种趋势也促成了统一分析理念的形成。虽然目前有数量繁多的新框架、引擎,但大家能够注意到,数据管理能力依旧没有跟上数据爆炸式增长的速度。所以在这种融合趋势的推动下,立足于新的场景,原有的很多理念和设计会重新焕发光彩,举个实际例子,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产品研发。

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/7M0fvL0kzAUMSNHuk21u
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券