Apache Spark 简明教程
Apache Spark - Introduction
各行业都在广泛使用 Hadoop 来分析其数据集。原因在于 Hadoop 框架基于一个简单的编程模型(MapReduce),并且它提供了一个可扩展、灵活、容错且具有成本效益的计算解决方案。这里,主要顾虑是在处理大型数据集的速度,即查询之间的等待时间和运行程序的等待时间。
Apache 软件基金会推出了 Spark 来加速 Hadoop 计算软件流程。
与普遍的看法相反, Spark is not a modified version of Hadoop 并不真正依赖于 Hadoop,因为它有自己的集群管理。Hadoop 只是实现 Spark 的方式之一。
Spark 以两种方式使用 Hadoop - 一种是 storage ,第二种是 processing 。由于 Spark 有自己的集群管理计算,所以它只将 Hadoop 用于存储目的。
Apache Spark
Apache Spark 是一种闪电般快速的集群计算技术,专为快速计算而设计。它基于 Hadoop MapReduce,并扩展了 MapReduce 模型以有效地将其用于更多类型的计算,包括交互式查询和流处理。Spark 的主要特征是其 in-memory cluster computing ,它提高了应用程序的处理速度。
Spark 旨在涵盖广泛的工作负载,例如批处理应用程序、迭代算法、交互式查询和流处理。除了在各自系统中支持所有这些工作负载外,它还减轻了维护单独工具的管理负担。
Evolution of Apache Spark
Spark 是 Hadoop 的一个子项目,于 2009 年在加州大学伯克利分校 AMPLab 由 Matei Zaharia 开发。它于 2010 年根据 BSD 许可证开源。它于 2013 年捐赠给 Apache 软件基金会,现在 Apache Spark 已成为自 2014 年 2 月起的一个顶级 Apache 项目。
Features of Apache Spark
Apache Spark 具有以下功能。
-
Speed - Spark 帮助在 Hadoop 集群中运行应用程序,速度在内存中提高多达 100 倍,在磁盘上运行时速度提高 10 倍。通过减少对磁盘的读/写操作次数,可以做到这一点。它将中间处理数据存储在内存中。
-
Supports multiple languages - Spark 在 Java、Scala 或 Python 中提供了内置的 API。因此,你可以使用不同的语言编写应用程序。Spark 提供了 80 个高级运算符用于交互式查询。
-
Advanced Analytics - Spark 不仅支持“映射”和“还原”。它还支持 SQL 查询、流数据、机器学习 (ML) 和图形算法。
Spark Built on Hadoop
下图展示了使用 Hadoop 组件构建 Spark 的三种方法。
如以下说明所示,共有三种 Spark 部署方法。
-
Standalone − Spark 独立部署表示 Spark 占据 HDFS(Hadoop 分布式文件系统)之上的位置,并明确分配空间给 HDFS。在此,Spark 和 MapReduce 将并排运行以覆盖群集上的所有 Spark 作业。
-
Hadoop Yarn − Hadoop Yarn 部署仅仅意味着 Spark 在 Yarn 上运行,无需预安装或 root 访问权限。它有助于将 Spark 集成到 Hadoop 生态系统或 Hadoop 堆栈中。它允许其他组件在堆栈之上运行。
-
Spark in MapReduce (SIMR) − Spark in MapReduce 用于在独立部署之外启动 spark 作业。通过 SIMR,用户可以启动 Spark 并使用其 shell,而无需任何管理访问权限。