在开始学习Spark之前,我们首先了解一下大数据的发展史。其实,大数据的应用很早就在一些知名的互联网公司中开始了,比如Facebook存储着全球30多亿用户的个人信息和日常每个用户在Facebook上发布的生活状态等内容;Google为全球搜索引擎巨头,其数据中心的规模很早就达到拍字节(PB [1] )级别了。除此之外,还有Twitter、AWS、百度、腾讯等知名互联网公司。最初,这些大数据技术基本上是在各个大公司内部独立进行研发和使用的,它们并没有开源,并且每个公司使用的技术方案也有很大的差异。另外,这些技术方案属于公司内部,其他开发者还很难接触到大数据技术。
到了2003年和2004年,Google决定将其内部的部分大数据方案公开,并因此发表了关于分布式文件系统、分布式计算模型和BigTable的三篇著名的论文。随后,Hadoop之父Doug Cutting基于这三篇论文实现了一套开源的大数据解决方案,也就是大家熟知的Hadoop。Hadoop具体包括HDFS(Hadoop分布式文件系统)和MapReduce(分布式计算引擎),2008年1月,Hadoop开始成为Apache顶级孵化项目并迎来了快速发展。
大数据技术真正被大众认识是从2008年后Hadoop的兴起开始的,随后大数据开源技术迎来了发展的快车道。紧接着Twitter 开源了分布式流式计算框架Storm,再到后来便是大家熟知的Spark了。Spark提供了“流批一体”的解决方案并被广泛使用至今。最近兴起的Flink则立足于实时流计算,并且在不断创新,向“流批一体”的解决方案靠近,具体如图1-1所示。
图1-1 大数据的发展演进
在这些众多的技术中,Spark是目前大数据项目中应用最广泛的产品之一。虽然Flink的流式方案正在受到大家的热捧,但是为了在十几分钟甚至几分钟内完成太字节(TB)级别复杂数据的分析和计算,仍然需要使用Spark才行。Spark也是大数据计算和机器学习项目中使用最广泛的产品之一。
下面我们来看看什么是Spark。Spark是美国加州大学伯克利分校的AMP实验室推出的一种开源、通用的分布式大数据计算引擎。Spark从2010年开始正式对外开源;2012年,Spark的0.16版本开始快速推广并得到应用;2014年,Spark发布了1.0.0版本,Spark已经完全成熟,成为大数据开发的必备技术方案;接下来是2016年发布的2.0.0版本,此时Spark和Structured Streaming在生产环境中开始被大量使用;2020年6月,Spark发布了3.0.0版本,并进一步在SQL智能优化和AI方面做出重大改进。随着数据湖和AI的快速发展,Spark正以更灵活的方式拥抱数据湖和AI,Spark + AI将成为未来发展的重要方向。Spark的具体发展历程如图1-2所示。
图1-2 Spark的发展历程