【大数据】Apache Flink vs Spark——一方会超越另一方吗?
视频号
微信公众号
知识星球
Apache Flink vs Spark,是大数据行业的热门新话题。了解Apache Spark是否会被Apache Flink推到图片之外。
Apache Spark和Apache Flink都是开源的分布式处理框架,旨在减少Hadoop Mapreduce在快速数据处理中的延迟。人们普遍误解Apache Flink将取代Spark,或者这两种大数据技术可能共存,从而满足容错、快速数据处理的类似需求。Apache Spark和Flink可能与那些没有使用过这两种技术,只熟悉Hadoop的人相似,很明显,他们会觉得Apache Flink的开发大多是多余的。但Flink之所以能够在游戏中保持领先,是因为它的流处理功能能够实时处理一行又一行的数据——这在Apache Spark的批处理方法中是不可能的。这使得Flink比Spark更快。
根据IBM的这项研究,我们每天创建大约2.5万亿字节的数据,而且这种数据生成速度仍在以前所未有的速度增长。从另一个角度来看,尽管万维网已经向公众开放了20多年,但世界上现有的所有数据中,约90%是在过去两年中创建的。在过去的十年里,随着互联网的发展,用户数量的增加和对内容日益增长的需求为Web 2.0铺平了道路。这是第一次允许用户在互联网上创建自己的数据,并准备被渴望数据的观众消费。
目录
- Apache Spark
- Spark的优点
- Apache闪烁
- Flink的优势
- Apache Flink vs Spark
- 成长故事——火花与闪烁
- 2021的增长故事——Spark和Flink
然后轮到社交媒体侵入我们的生活了。根据wersm(我们是社交媒体)的报告,脸书在一分钟内获得了超过400万个赞!在我们了解这些数据是如何消耗的之前,信息图中提到了其他流行来源产生的数据(取自同一项wersm研究)。
“如何存储这些巨大的数据?”这是一个让科技极客在过去十年的大部分时间里都很忙的问题陈述。社交媒体的突然兴起并没有让他们的任务变得更容易。然而,云计算等新时代的存储解决方案已经彻底改变了行业,并提供了尽可能好的解决方案。在当前的十年里,问题陈述已经转变为“如何处理海量数据?”数据分析成为最终目标,但在此之前,需要做大量工作来整合不同来源以不同格式存储的数据,并为处理和分析做好准备,这是一项艰巨的任务。
我们今天的两个主题——Apache Spark和Apache Flink——试图回答这个问题以及更多问题。
Apache Spark
Spark是一个开源的集群计算框架,拥有庞大的全球用户群。它是用Scala、Java、R和Python编写的,为程序员提供了一个基于容错、只读多组分布式数据项的应用程序编程接口(API)。自首次发布(2014年5月)以来的短短2年时间里,由于其速度快、易用性强以及能够处理复杂的分析需求,它在实时、内存和高级分析方面获得了广泛的接受。
Spark的优点
与传统的基于大数据和MapReduce的技术相比,Apache Spark有几个优势。突出的是。它本质上将MapReduce提升到了一个新的水平,其性能提高了数倍。Spark的一个关键区别是它能够将中间结果保存在内存中,而不是写回磁盘并再次从中读取,这对于基于迭代的用例至关重要。
- 速度–Spark执行批处理作业的速度是MapReduce的10到100倍。这并不意味着它在必须向磁盘写入数据(和从磁盘提取数据)时落后,因为它是大规模磁盘上排序的世界纪录保持者。
- 易用性–Apache Spark具有易于使用的API,专为在大型数据集上操作而构建。
- 统一引擎–Spark可以在Hadoop之上运行,利用其集群管理器(YARN)和底层存储(HDFS、HBase等)。然而,它也可以独立于Hadoop运行,与其他集群管理器和存储平台(如Cassandra和Amazon S3)合作。它还提供了更高级别的库,支持SQL查询、数据流、机器学习和图形处理。
- 从Java、Scala或Python中进行选择–Spark不会将您束缚在特定的语言上,而是允许您从流行的语言中进行选择,如Java、Scala、Python、R甚至Clojure。
- 内存中的数据共享–不同的作业可以在内存中共享数据,这使其成为迭代、交互和事件流处理任务的理想选择。
- 活跃、不断扩大的用户社区——活跃的用户社区使Spark在首次发布后的2年内稳定发布(2016年6月)。这充分说明了它在世界范围内的可接受性,这种可接受性正在上升。
Apache Flink
Apache Flink在德语中是“快速”或“灵活”的意思,是最新加入专注于大数据分析的开源框架名单的公司,这些框架正试图取代Hadoop老化的MapReduce,就像Spark一样。Flink于2016年3月发布了第一个API稳定版本,与Spark一样,它是为批处理数据的内存处理而构建的。当需要对同一数据进行重复传递时,此模型非常方便。这使其成为机器学习和其他需要自适应学习、自学习网络等的用例的理想候选者。随着物联网(IoT)空间的不可避免的繁荣,Flink用户社区有一些令人兴奋的挑战值得期待。
Flink的优势
实际的流处理引擎,可以近似于批处理,而不是相反。
- 更好的内存管理——显式内存管理消除了Spark框架中偶尔出现的峰值。
- 速度–它允许在同一节点上进行迭代处理,而不是让集群独立运行,从而管理更快的速度。它的性能可以通过调整来进一步调整,只重新处理发生变化的那部分数据,而不是整个数据集。与标准处理算法相比,它的速度提高了五倍。
- 配置较少
Apache Flink vs Spark
当Flink出现时,Apache Spark已经成为世界各地许多组织的快速内存大数据分析需求的事实框架。这让Flink显得多余。毕竟,在现有的数据处理引擎还没有定论的情况下,为什么还要需要另一个数据处理引擎?人们必须更深入地挖掘Flink的功能,以观察它的与众不同之处,尽管许多分析师将其称为“数据分析的4G”。
Flink瞄准并试图利用Spark设置中的一个小弱点。尽管出于随意讨论的目的,Spark并不纯粹是一个流处理引擎。正如Ian Pointer在InfoWorld的文章《Apache Flink:新的Hadoop竞争者与Spark较量》中所观察到的那样,Spark本质上是一种快速批处理操作,在一个时间单位内只处理一小部分传入数据。Spark在其官方文档中将其称为“微批量”。这个问题不太可能对操作有任何实际意义,除非用例需要低延迟(金融系统),因为毫秒级的延迟会造成重大影响。话虽如此,Flink几乎是一项正在进行的工作,目前还不能宣称取代Spark。
Flink是一个流处理框架,可以运行需要批处理的杂务,让您可以选择在两种模式下使用相同的算法,而不必求助于像Apache Storm这样需要低延迟响应的技术。
Spark和Flink都支持内存处理,这使它们在速度上优于其他框架。在实时处理传入数据方面,Flink无法与Spark抗衡,尽管它有能力执行实时处理任务。
Spark和Flink都可以处理迭代的内存处理。在速度方面,Flink占据了上风,因为它可以被编程为只处理发生变化的数据,这就是它在Spark之上的表现。
成长故事——Spark与Flink
任何软件框架都需要的不仅仅是技术专长,还需要帮助企业获得最大价值。在本节中,我们深入研究Databricks撰写的Apache Spark 2015 Year In Review文章,了解它在全球用户和开发人员社区中的表现。这一年共发布了4个版本(1.3到1.6),每个版本都有数百个修复程序来改进框架。吸引我们眼球的是贡献开发者数量的增长——从2014年的500人增长到2015年的1000多人!Spark的另一个值得注意的地方是它的用户很容易过渡到新版本。报告提到,在三个月内,大多数用户都会接受最新版本。这些事实增强了它作为最积极开发(和采用)的开源数据工具的声誉。
Flink在竞争中相对较晚,但2015年在其官方网站上的回顾表明了它为什么会成为最完整的开源流处理框架。Flink的github存储库(Get the repository–Here)显示,2015年社区规模翻了一番,从75个贡献者增加到150个。存储库分叉在这一年中增加了两倍多,存储库的恒星数量也增加了三倍多。从德国柏林开始,它的用户社区已经跨越各大洲发展到北美和亚洲。Flink Forward会议是Flink的又一个里程碑,有250多名与会者参加,100多名与会者从全球各地赶来,参加了来自谷歌、MongoDB、电信、NFLabs、RedHat、IBM、华为、爱立信、Capital One、Amadeus等组织的技术会谈。
尽管从这两个框架中选出一个作为明显的赢家还为时过早,但我们认为,与其让许多框架做同样的事情,不如让新进入者做不同的事情,补充现有的事情,而不是与它们竞争,从而更好地服务于科技世界。
2021的增长故事——Spark和Flink
任何软件框架都需要的不仅仅是技术专长,还需要帮助企业获得最大价值。在本节中,我们深入研究了过去十年对Apache Spark的回顾,以了解它在全球用户和开发人员社区中的表现。2020年,Apache 3.0发布,这是迄今为止最大的一次发布,有超过3400张已解决的社区Ticket。此版本的首要活动组件是Spark SQL,因为已解决的票证中约46%与SparkSQL引擎(所有数据帧API调用的底层引擎)有关。这次更新让世界见证了阿里巴巴基于Apache Hadoop和Spark的云E-MapReduce,创造了TPC-DS Benchmark的新世界纪录。如果您不知道,TPC-DS是基于SQL的大数据系统的第一个基准测试。Spark这个新版本的另一个值得注意的地方是,它收集了大量的Spark生态系统项目,包括 Koalas, Delta-Lake、推广Spark作为流行数据科学库(如sci-kit learn)的扩展后端等。吸引我们眼球的是,Spark社区注意到切换到最新版本的过程尽可能顺利。这些事实增强了它作为最积极开发(和采用)的开源数据工具的声誉。
Flink在比赛中相对较晚,但2020年Flink Forward全球虚拟会议
显示它拥有Apache软件基金会中最活跃的社区成员之一。Flink的GitHub存储库(Get the repository–Here)显示,该社区的规模已经大幅增长,从2015年的75个贡献者增长到现在的895个。社区成员的这种热情为Flink带来了许多令人兴奋的功能,如世界级的统一SQL、CDC集成、状态处理器API、Hive集成等等。
虽然在流媒体功能方面,Flink肯定被认为比Spark更快,但很难挑出其中一个作为明显的赢家,因为后者拥有更强大、更古老的社区支持。我们认为,与其让许多框架做同样的事情,不如让新进入者做不同的事情,补充现有的框架,而不是与它们竞争,从而更好地服务于科技世界。
- 465 次浏览