了解 Apache Spark
介绍
一家公司或组织能否高效处理数据,对于其使命能否顺利完成有着重大影响。作为当今世界的数据专业人士,您很可能会被要求处理或挖掘非常大的数据集的见解。那么,如何高效而优雅地分析这些海量数据集呢?如何跨多种编程语言和环境传输这些数据呢?
答案是 Spark。
简单来说,Spark 是一个以分布式方式分析数据的引擎。当您尝试对非常大的数据集进行流式传输或运行分析时,Spark 确实大放异彩。
本指南将为您提供 Spark 的总体概述。Spark 拥有非常强大且通用的 API,因此本指南无法深入介绍所有内容。相反,我们将重点介绍 Spark 提供的功能及其结构。
让我们开始吧!
Spark Core:总体架构
首先,让我们学习一下 Spark 的语言。以下是 Spark 在其架构中使用的一般术语的细分:
- 主节点:主 Spark 进程,负责接收用户创建的 Spark 应用程序并与集群管理器通信。
- 应用程序:这本质上是一个用 Scala、Python、Java 等编写的用户创建的程序,它利用给定编程语言生态系统的众多可用 Spark 驱动程序之一。
- 集群管理器:此幕后管理器负责将已提交应用程序的计算分配到工作节点。集群管理器管理 Spark 资源并将应用程序分配给工作节点。
- 工作节点:工作节点负责为给定的应用程序执行给定的计算。
Spark Core 就是分析引擎的核心。它包括基础 Spark API,用于将 Spark 应用程序提交到您环境中正在运行的 Spark 实例。Spark Core 本身分为上述四个主要部分。其中第一个是 Spark 应用程序。Spark 应用程序是您使用任何可用的 Spark API 自己编写的。例如,您可以使用 Spark 的 Scala API 编写连接到 Spark、查询可用数据集、执行计算然后输出结果的代码。Spark 应用程序提交到主节点。
第二个架构部分是主节点。此进程包含您提交 Spark 应用程序的接口。主节点通过集群管理器将应用程序分散到工作节点。集群管理器是您不直接与之交互的 Spark 架构的一部分。集群管理器负责以有效的方式将工作分散到工作节点等。
最后,工作节点就是工作的节点!这些正在运行的进程配置了一定数量的系统资源,然后由上下文管理器分配工作。
总之,Spark 使用这些部分以分布式方式执行极快且故障安全的计算。
Spark 工作流概述:从开始到结束
让我们深入了解 Spark 在集群环境中运行的一般工作流程。通常,您要做的第一件事是下载 Spark 并在系统中启动主节点。您可以通过在 Spark 的sbin目录中运行以下命令来启动独立的主节点:./start-master.sh。主节点启动后,您需要检查成功启动后在 shell 中打印出的 URL。您将使用此 URL 启动您的工作节点。
启动主节点后,接下来需要启动一个或多个工作节点。请记住,这些节点将执行实际工作!您可以通过运行./start-slave.sh <master-node-URL>来启动工作节点。现在您已经启动了工作节点,您可以继续查看 Spark UI。默认情况下,Spark 的 UI 位于https://localhost:8080。此 UI 非常有用,因为它为您提供了一个窗口,您可以通过该窗口轻松监视正在运行的应用程序、资源等。
做得好。Spark 正在运行!接下来,您需要实现 Spark 应用程序的逻辑,并使用Spark 在设置时提供的spark-submit工具将此应用程序提交到主节点。此应用程序可以使用 Java、Scala、R 或 Python Spark API 编写。
实现 Spark 应用程序超出了本指南的范围,但您可以在此处找到有关如何编写 Spark 应用程序的更多信息。实现应用程序后,您将把它提交给 Spark 主节点。然后,您可以从 Spark UI 监视正在运行的应用程序。
Spark 库:概述
Spark 目前包含四个库,可帮助解决许多其他需要分布式处理解决方案的小问题集。这四个库包括:
- Spark 流
- Spark SQL
- 库
- GraphX
Spark Streaming 是 Spark 提供的用于处理数据流的库。除了创建您自己的自定义数据源之外,Spark Streaming 还使您能够通过 HDFS(Hadoop 分布式文件系统)、Flume、Kafka、Twitter 和 ZeroMQ 流式传输数据。Spark Streaming 的强大之处在于能够结合流数据的批处理和分析。在 Spark Streaming 之前,通常需要使用不同的技术来涵盖这些功能。Spark Streaming 允许您对流数据进行批处理以及在其上执行 MLlib 和 Spark SQL 工作负载。
Spark Streaming 提供了用于处理流数据的 API,而 Spark SQL 是用于处理结构化数据的 Spark API。Spark SQL 可用于 Scala、Java、Python 和 R,如果您有需要分析的任何结构化数据,那么您可以使用它。一个很好的用例是需要分析正在流式传输到系统中的 TB 级 JSON 数据。请记住,您可以将此 API 与 Spark Streaming API 结合使用,对正在流式传输的结构化数据执行计算。
MLlib 是 Spark 的内置机器学习库。MLlib 允许您使用可用的 Spark API 对结构化和非结构化数据进行机器学习。MLlib 具有用于进行机器学习的强大 API。它包括大多数主要分类和回归机器学习机制的类等。有关 MLlib 的更多信息,请查看 MLlib文档。
GraphX 是 Spark 用于对图形数据集/数据源执行计算和分析的 API。GraphX 扩展了现有的 Spark SQL API,以便您可以执行图形处理。GraphX 的一个绝佳用例是在需要对庞大的社交网络或其他基于图形的数据集执行计算时。
结论
在本指南中,您获得了 Apache Spark 的高级概述。您了解了 Spark 是什么以及它在当今以数据为中心的世界中的重要性。然后,您了解了有关 Spark 的一般架构以及它作为分析引擎的结构。最后,您了解了可用的不同 Spark 库,以及这些库如何围绕 Spark 创建了一个完整的开源生态系统,该生态系统对各种编程环境开放。
现在,您既可以开始使用 Spark,又可以满怀信心地了解 Spark 及其任何库在您自己的组织或项目中的适用范围。有关更多信息,请查看官方 Spark文档。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~