Apache Spark 初学者教程:通过示例学习 Apache Spark
已发表: 2020-03-26目录
介绍
数据无处不在——从小型初创公司的客户日志到大型跨国公司的财务表。 公司使用这些生成的数据来了解他们的业务表现如何以及他们可以改进的地方。 Gartner Research 高级副总裁 Peter Sondergaard表示,信息是 21 世纪的石油,而分析可以被视为内燃机。
但随着公司的成长,他们的客户、利益相关者、业务合作伙伴和产品也在成长。 因此,他们必须处理的数据量变得巨大。
必须分析所有这些数据,以便为客户创造更好的产品。 但每秒产生的数 TB 数据无法使用 Excel 工作表和日志来处理。 Apache Spark 等工具可以处理巨大的数据集。
我们将通过对 Apache Spark的介绍来深入了解该软件的细节。
什么是 Apache Spark?
Apache Spark 是一个开源的集群计算框架。 它基本上是一个数据处理系统,用于处理巨大的数据工作负载和数据集。 它可以快速处理大型数据集,并将这些任务分布在多个系统中以减轻工作量。 它有一个简单的 API,可以在开发人员被大数据处理和分布式计算这两个术语淹没时减轻他们的负担!
Apache Spark 的开发始于加州大学伯克利分校 AMPLab 的一个开源研究项目,由被认为是 Spark 创始人的Matei Zaharia进行。 2010 年,在 BSD 许可下,该项目开源。 后来在2013年成为Apache软件基金会的孵化项目,成为2014年公司的顶级项目之一。

2015 年,Spark 有超过 1000 名贡献者参与了该项目。 这使其成为Apache 软件基金会和大数据世界中最活跃的项目之一。 自 2009 年以来,已有 200 多家公司支持该项目。
但是为什么所有这些对 Spark 的疯狂呢?
这是因为 Spark 能够一次处理大量数据并对其进行处理。 这些数据可以分布在数千个连接的虚拟或物理服务器上。 它拥有大量的 API 和库,可与 Python、R、Scala 和 Java 等多种编程语言一起使用。 它支持数据流、图形处理等复杂任务以及机器学习。 此外,apache spark 改变游戏规则的特性使其需求量很大。
它支持广泛的数据库,例如 Hadoop 的 HDFS、Amazon S3 和 NoSQL 数据库,例如 MongoDB、Apache HBase、MapR 数据库和 Apache Cassandra。 它还支持 Apache Kafka 和 MapR Event Store。
Apache Spark 架构
在探索了 Apache Spark 的介绍之后,我们现在将了解它的结构。 了解有关 Apache 架构的更多信息。
它的架构定义明确,有两个主要组件:
弹性分布式数据集 (RDD)
这是存储在 Spark 集群的工作节点上的数据项的集合。 集群是可以安装 Spark 的分布式机器集合。 RDD 被称为弹性,因为它们能够在发生故障时修复数据。 它们被称为分布式,因为它们分布在集群中的多个节点上。
Spark 支持两种类型的 RDD:
- 从HDFS(Hadoop 分布式文件系统)上的文件创建的 Hadoop 数据集
- 基于 Scala 集合的并行化集合
RDD 可用于两种类型的操作:
- 转换——这些操作用于创建 RDD
- 动作——这些用于指示 Spark 执行一些计算并将结果返回给驱动程序。 我们将在接下来的部分中了解有关驱动程序的更多信息
DAG(有向无环图)
这可以被认为是对数据的一系列操作。 它们是顶点和边的组合。 每个顶点代表一个 RDD,每个边代表必须在该 RDD 上执行的计算。 这是一个包含应用于 RDD 的所有操作的图。
这是一个有向图,因为一个节点连接到另一个节点。 该图是非循环的,因为其中没有循环或循环。 一旦进行了变换,就不能回到原来的位置。 Apache Spark 中的转换是将数据分区状态从 A 转换为 B 的操作。
那么,这种架构是如何工作的呢? 让我们看看。
Apache Spark 架构有两个主要的守护进程和一个集群管理器。 这些是 - master 和 worker 守护进程。 守护进程是作为后台进程执行的程序。 Spark 中的集群可以有许多从属,但只有一个主守护进程。
在主节点内部,有一个执行 Spark 应用程序的驱动程序。 您可能用来运行代码的交互式外壳充当驱动程序。 在驱动程序内部,创建了 Spark 上下文。 该上下文和驱动程序在集群管理器的帮助下执行作业。

然后将作业拆分为许多任务后,将其分发到工作节点上。 这些任务由工作节点在 RDD 上运行。 结果返回给Spark Context 。 当您增加工作人员的数量时,作业可以分为多个分区并在多个系统上并行运行。 这将减少工作量并提高工作的完成时间。
Apache Spark:优势
这些是使用 Apache Spark 的优点:
速度
在执行作业时,数据首先存储在 RDD 中。 因此,由于这些数据存储在内存中,因此可以快速访问它,并且可以更快地执行作业。 除了内存缓存,Spark 还优化了查询执行。 通过这个,分析查询可以运行得更快。 可以获得非常高的数据处理速度。 处理大规模数据的速度比 Hadoop 快 100 倍。
处理多个工作负载
Apache Spark 可以一次处理多个工作负载。 这些可以是交互式查询、图形处理、机器学习和实时分析。 Spark 应用程序可以轻松整合许多工作负载。
便于使用
Apache Spark 具有易于使用的 API 来处理大型数据集。 这包括 100 多个可用于构建并行应用程序的运算符。 这些运算符可以转换数据,并且可以使用数据框 API 操作半结构化数据。
语言支持
Spark 是开发人员的最爱,因为它支持多种编程语言,例如 Java、Python、Scala 和 R。这为您开发应用程序提供了多种选择。 这些 API 也对开发人员非常友好,因为它们帮助他们将复杂的分布式处理技术隐藏在高级运算符后面,从而有助于减少所需的代码量。
效率
惰性求值在 Spark 中进行。 这意味着通过 RDDS 进行的所有转换本质上都是惰性的。 因此,这些转换的结果不会立即产生,而是从现有的 RDD 创建一个新的 RDD。 用户可以将 Apache 程序组织成几个较小的操作,这增加了程序的可管理性。
惰性评估提高了系统的速度和效率。
社区支持
作为最大的开源大数据项目之一,它拥有来自不同公司的 200 多名开发人员。 2009 年,该社区成立并自此不断发展壮大。 因此,如果您遇到技术错误,您很可能会在网上找到由开发人员发布的解决方案。
您可能还会发现许多自由职业者或全职开发人员准备在您的 Spark 项目中为您提供帮助。
实时流式传输
Spark 以流实时数据而闻名。 这可以通过 Spark Streaming 实现,它是核心 Spark API 的扩展。 这使数据科学家能够处理来自各种来源的实时数据,例如Amazon Kinesis 和 Kafka 。 然后可以将处理后的数据传输到数据库、文件系统和仪表板。
从Spark Streaming可以快速从数据故障中恢复的意义上,该过程是高效的。 它执行更好的负载平衡并有效地使用资源。
Apache Spark 的应用
在介绍了 Apache Spark 及其好处之后,我们将详细了解它的不同应用:
机器学习
Apache Spark 将数据存储在内存中并重复执行查询的能力使其成为训练 ML 算法的好选择。 这是因为重复运行类似的查询将减少确定最佳解决方案所需的时间。
Spark 的机器学习库 (MLlib)可以执行高级分析操作,例如预测分析、分类、情感分析、聚类和降维。
数据整合
跨组织内不同系统生成的数据并不总是干净且有条理的。 Spark 是对这些数据执行 ETL 操作的非常有效的工具。 这意味着它执行、提取、转换和加载操作以从不同来源提取数据、清理和组织数据。 然后将该数据加载到另一个系统中进行分析。
交互式分析
这是一个过程,用户可以通过该过程对实时数据进行数据分析。 借助Spark中的结构化流功能,用户可以对实时数据运行交互式查询。 您还可以在实时 Web 会话上运行交互式查询,这将促进 Web 分析。 机器学习算法也可以应用于这些实时数据流。
雾计算
我们知道 IoT(物联网)处理来自各种具有传感器的设备的大量数据。 这将创建一个互连设备和用户的网络。 但随着物联网网络开始扩展,需要分布式并行处理系统。

因此,数据处理和分散存储是通过雾计算和 Spark 一起完成的。 为此,Spark 提供了强大的组件,例如 Spark Streaming、GraphX 和 MLlib。 详细了解 apache spark 的应用。
结论
我们了解到 Apache Spark 快速、有效且功能丰富。 这就是为什么华为、百度、IBM、摩根大通、洛克希德马丁和微软等公司正在使用它来加速他们的业务。 现在,它在零售、商业、金融服务、医疗保健管理和制造等各个领域都享有盛誉。
随着世界对数据的依赖程度越来越高,Apache Spark 将继续成为未来数据处理的重要工具。
如果您有兴趣了解有关大数据的更多信息,请查看我们的 PG 大数据软件开发专业文凭课程,该课程专为在职专业人士设计,提供 7 多个案例研究和项目,涵盖 14 种编程语言和工具,实用的动手操作研讨会,超过 400 小时的严格学习和顶级公司的就业帮助。
从世界顶级大学在线学习软件开发课程。 获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。