下载
请从项目官网的 下载页面 获取 Spark。本文档适用于 Spark 4.1.1 版本。Spark 使用 Hadoop 的客户端库来支持 HDFS 和 YARN。下载包已预先针对一些主流的 Hadoop 版本进行了打包。用户也可以下载“无 Hadoop”版本的二进制包,并通过 扩充 Spark 的类路径 (classpath) 来配合任意版本的 Hadoop 运行 Spark。Scala 和 Java 用户可以使用 Maven 坐标将 Spark 引入其项目中,Python 用户则可以通过 PyPI 安装 Spark。
如果您想从源码构建 Spark,请访问 构建 Spark。
Spark 可在 Windows 和类 UNIX 系统(如 Linux、Mac OS)上运行,且应能在任何运行受支持 Java 版本的平台上运行。这包括 x86_64 和 ARM64 架构上的 JVM。在单机上本地运行非常简单——您只需要在系统中安装了 java 并将其添加到 PATH 中,或者设置 JAVA_HOME 环境变量指向 Java 安装目录即可。
Spark 运行于 Java 17/21、Scala 2.13、Python 3.10+ 和 R 3.5+(已弃用)之上。使用 Scala API 时,应用程序必须使用与 Spark 编译版本相同的 Scala 版本。自 Spark 4.0.0 起,该版本为 Scala 2.13。
运行示例与 Shell
Spark 附带了多个示例程序。Python、Scala、Java 和 R 的示例位于 examples/src/main 目录下。
要在 Python 解释器中交互式运行 Spark,请使用 bin/pyspark
./bin/pyspark --master "local[2]"
提供了 Python 编写的示例应用程序。例如:
./bin/spark-submit examples/src/main/python/pi.py 10
要运行其中一个 Scala 或 Java 示例程序,请在 Spark 顶层目录中使用 bin/run-example <class> [params]。(实际上,这会调用更通用的 spark-submit 脚本 来启动应用程序)。例如:
./bin/run-example SparkPi 10
您还可以通过修改版的 Scala shell 交互式运行 Spark。这是学习该框架的绝佳方式。
./bin/spark-shell --master "local[2]"
--master 选项用于指定 分布式集群的主节点 URL,或者使用 local 在本地以单线程运行,或使用 local[N] 在本地以 N 个线程运行。建议先从 local 开始进行测试。如需完整的选项列表,请使用 --help 选项运行 Spark shell。
自 1.4 版本起,Spark 提供了 R API(仅包含 DataFrame API)。要在 R 解释器中交互式运行 Spark,请使用 bin/sparkR
./bin/sparkR --master "local[2]"
同时也提供了 R 语言的示例应用程序。例如:
./bin/spark-submit examples/src/main/r/dataframe.R
使用 Spark Connect 在任意位置运行 Spark 客户端应用程序
Spark Connect 是 Spark 3.4 引入的一种全新的客户端-服务器架构,它将 Spark 客户端应用程序与服务端解耦,并允许远程连接到 Spark 集群。客户端与服务器的分离使得 Spark 及其开放生态系统可以被任何地方、任何应用程序所利用。在 Spark 3.4 中,Spark Connect 为 PySpark 提供了 DataFrame API 覆盖,并支持 Scala 中的 DataFrame/Dataset API。
要了解有关 Spark Connect 及其使用方法的更多信息,请参阅 Spark Connect 概述。
在集群上启动
Spark 集群模式概述 解释了在集群上运行时的关键概念。Spark 既可以独立运行,也可以在多个现有的集群管理器之上运行。目前它提供了几种部署选项:
- 独立部署模式 (Standalone Deploy Mode):在私有集群上部署 Spark 最简单的方法
- Hadoop YARN
- Kubernetes
后续步骤
编程指南
- 快速入门 (Quick Start):Spark API 的快速介绍;从这里开始!
- RDD 编程指南:Spark 基础知识概览 - RDD(核心但较旧的 API)、累加器和广播变量
- Spark SQL, Datasets 和 DataFrames:使用关系查询处理结构化数据(比 RDD 更现代的 API)
- 结构化流 (Structured Streaming):使用关系查询处理结构化数据流(使用 Datasets 和 DataFrames,比 DStreams 更现代的 API)
- Spark Streaming:使用 DStreams 处理数据流(旧版 API)
- MLlib:应用机器学习算法
- GraphX:图处理
- SparkR (已弃用):在 R 语言中使用 Spark 进行数据处理
- PySpark:在 Python 中使用 Spark 进行数据处理
- Spark SQL CLI:在命令行中使用 SQL 处理数据
- 声明式管道 (Declarative Pipelines):构建创建和维护多个表的数据流水线
API 文档
- Spark Python API (Sphinx)
- Spark Scala API (Scaladoc)
- Spark Java API (Javadoc)
- Spark R API (Roxygen2)
- Spark SQL, 内置函数 (MkDocs)
部署指南
- 集群概述:在集群上运行时涉及的概念和组件概述
- 提交应用程序:应用程序的打包与部署
- 部署模式
- 独立部署模式:无需第三方集群管理器,快速启动独立集群
- YARN:在 Hadoop NextGen (YARN) 之上部署 Spark
- Kubernetes:直接在 Kubernetes 之上部署 Spark 应用程序
- Amazon EC2:让您在大约 5 分钟内即可在 EC2 上启动集群的脚本
- Spark Kubernetes Operator:
- SparkApp:通过 operator 模式 在 Kubernetes 上部署 Spark 应用程序
- SparkCluster:通过 operator 模式 在 Kubernetes 上部署 Spark 集群
其他文档
- 配置:通过配置系统自定义 Spark
- 监控:跟踪应用程序的行为
- Web UI:查看有关应用程序的有用信息
- 调优指南:优化性能和内存使用的最佳实践
- 作业调度:在 Spark 应用程序内部及跨应用程序进行资源调度
- 安全性:Spark 安全支持
- 硬件配置:集群硬件配置建议
- 与其他存储系统的集成
- 迁移指南:各 Spark 组件的迁移指南
- 构建 Spark:使用 Maven 系统构建 Spark
- 为 Spark 做贡献
- 第三方项目:与 Spark 相关的第三方项目
外部资源