购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 Spark简介

Apache Spark(下文简称Spark)是一个多语言引擎,用于单节点机器或集群上的数据工程、数据科学和机器学习任务。Spark擅长大规模数据的统一分析处理。它提供了Java、Scala、Python和R等语言的高级API,以及支持通用执行图的优化引擎。此外,它还支持一套丰富的高级工具,包括用于SQL和结构化数据处理的Spark SQL、用于Pandas工作负载的Pandas API、用于机器学习的MLlib、用于图形处理的GraphX以及用于增量计算和流处理的Structured Streaming。

Spark的发展历程可以追溯到其诞生以来的多个重要阶段。接下来,我们将概述Spark的主要发展历程。

1.1.1 诞生与初始阶段

Spark于2009年在美国加州大学伯克利分校的AMP(Algorithms, Machines, and People)实验室诞生,作为一个研究性项目开始。它的初衷是为了解决Hadoop MapReduce在迭代计算和交互式数据分析等方面的不足,提供一个更加快速、灵活和高效的大数据处理框架。如图1-1所示,Spark具有支持循环数据流和内存计算的先进的DAG执行引擎,所以比Hadoop MapReduce在内存计算方面快100倍,在硬盘计算方面快10倍。

图1-1 Spark与Hadoop MapReduce计算对比

1.1.2 开源与社区建设

在2010年,Spark通过BSD许可协议被开源发布。这一开放性的决定使得更多的开发者和组织能够参与到Spark的开发和使用中来,从而推动了其生态系统的不断壮大。

Spark的生态系统非常庞大和完善,包括多个组件和工具,如Spark SQL、Spark Streaming、Spark MLlib、GraphX等。这些组件和工具共同构成了Spark的生态系统,为开发者提供了强大的支持和帮助。同时,Spark还有一个庞大的社区支持体系,包括各种论坛、邮件列表、教程和文档等。这些资源为开发者提供了丰富的学习和交流机会,使得他们能够更好地掌握和使用Spark。

Spark还与其他第三方开源项目保持紧密的联系,包括Hadoop、HBase、Mesos、YARN等。图1-2展示了Spark与其他第三方开源项目的关系。

图1-2 Spark与其他第三方开源项目的关系

1.1.3 成为顶级项目

2013年,Spark捐赠给Apache软件基金会,并切换了开源协议至Apache 2.0。在Apache基金会的支持下,Spark得到了更广泛的关注和更快速的发展。

2014年2月,Spark成为Apache的顶级项目,标志着其在大数据处理领域的重要地位得到了业界的广泛认可。同年11月,Spark的母公司Databricks团队在国际著名的Sort Benchmark全球数据排序大赛中,使用Spark刷新了数据排序的世界纪录,进一步证明了Spark在处理大规模数据时的强大性能。

如图1-3所示是Sort Benchmark全球数据排序大赛官网(http://sortbenchmark.org)所公布的2014年全球大数据排序性能评测大赛结果,其中Spark刷新了数据排序的世界纪录。

图1-3 Spark刷新了数据排序的世界纪录

1.1.4 版本更新

在版本更新方面,Spark也保持着快速的发展节奏。

1.Spark 1.0

Spark 1.0包含以下特性:

· 引入了内存计算的理念,解决了中间结果落盘导致的效率低下问题。在理想状况下,性能可达到MapReduce的100倍。

· 支持丰富的API,支持多种编程语言,如Python、Scala、Java、R等,代码量减少5倍以上,并且受众群体更广。

· 提供一站式的解决方案,同时支持离线、微批、图计算和机器学习。

· 支持多部署模式:Standalone、Cluster等。

但也带来了大量的内存管理问题,将MapReduce的磁盘IO性能瓶颈转变为CPU性能瓶颈。Spark SQL的支持主要依赖于Shark,而Shark对Hive的依赖太大,在进行版本升级时需要考虑多方的兼容性。

2.Spark 2.0

Spark 2.0包含以下特性:

· 引入了对Structured Streaming的支持,这是Spark Streaming的演进版本,提供了可容错、高吞吐量的流处理。

· 改进了Dataset API,提供了更强大、更灵活的数据处理功能。

· 增强了与Hadoop生态系统的集成,包括与HDFS、Hive、HBase等的更好集成。

· 改进了内存管理和垃圾回收机制,提高了性能和稳定性。

3.Spark 3.0

Spark 3.0包含以下特性:

· 引入了Adaptive Query Execution(AQE)功能,可以根据运行时统计信息动态调整查询计划,以优化性能。如图1-4所示,启用AQE功能之后,性能提高了8倍。

图1-4 启用AQE功能之后性能提高了8倍

· 增强了Pandas UDF(User-Defined Function,用户定义函数)的支持,使得在Spark中使用Pandas API变得更加容易。

· 改进了与Kubernetes的集成,提供了更好的容器化部署和管理功能。

· 增强了机器学习和图计算功能,包括新的算法和更高效的执行引擎。

随着Spark的不断发展,新版本还会不断引入新的特性和改进。因此,为了充分利用Spark的功能并获得最佳性能,建议读者始终使用新版本的Spark。同时,也需要注意新版本可能带来的兼容性问题,确保在升级之前进行充分的测试和验证。 bSt6NB2X0nqO327avmFMS/4WXggfjnQGifVoUjAQoczmxrMTMJr+O8AGWy5g35LC

点击中间区域
呼出菜单
上一章
目录
下一章
×