# 一、概述
Apache Spark 是一个多语言引擎,用于在单节点机器或集群上执行数据工程、数据科学和机器学习任务。本文将为您提供在高性能计算(HPC)集群系统上运行多节点 Spark 集群的指南,并展示一个使用 PySpark 的作业示例。
# 二、开始
# 1. 下载 OpenJDK-11.0.2
从 OpenJDK 官方网站
下载 OpenJDK-11.0.2。选择 Linux 的对应版本并下载。解压下载的文件并将其放置在 ${HOME}/software/openjdk
中并重命名为 11.0.2
。
# 2. 下载 Spark-3.4.2
从 Apache Spark 下载页面 下载 Spark 。本文使用的是 Spark-3.4.2,但本指南应该也适用于更新的版本。解压下载的文件并将目录重命名为 3.4.2,放置在 ${HOME}/software/spark 文件夹中。
# 3. 配置 modulefile
在自定义目录中安装软件后,需要将软件的可执行文件路径等添加到相应的环境变量中才能使用。module
是一款环境变量管理工具,通过 module
实现软件环境变量的管理,快速加载和切换软件环境。集群中安装了一些常用的软件和库,可以通过 module
进行加载使用。
在这里,我们需要编写 modulefile
来管理自己的 JDK 和 Spark 软件环境,以便快速加载 Java 和 Spark 环境。
- 在
${HOME}/modulefiles/openjdk
中创建名为11.0.2
的文本文件,内容为:
|
|
- 在
${HOME}/modulefiles/spark
中创建名为3.4.2
的文本文件, 内容为:
|
|
# 4. 使用 pip 安装 pyspark 库
- 创建虚拟 Conda 环境 pyspark
|
|
- 安装 pyspark
|
|
# 5. 编写环境加载脚本 set-spark-env.sh
- 在
${HOME}/scripts
目录下编写set-spark-env.sh
脚本文件:
|
|
# 6. 编写 sbatch 脚本
- 为了启动 Spark 集群,我们使用以下 Slurm 脚本来请求计算节点。Slurm 脚本请求四个节点,并生成一个 master 节点和三个 worker 节点的 Spark 集群。可以通过更改 Slurm 脚本中的
-N
选项的值来增加或减少工作节点的数量。
|
|
- 该 Slurm 脚本会提交一个用于测试的 python 脚本(
spark_test.py
),内容如下。此脚本运行 PySpark 代码来测试 Spark 集群。复制下面的内容,并将其保存在 sbatch 脚本所在目录中的spark_test.py
文件。你也可以更改spark_test.py
文件的路径,但必须适当地更新 Slurm 脚本。
|
|
- 如果启动了 Spark 集群并且
spark-test.py
成功执行,那么日志文件o.spark_test
中的输出应该如下:
|
|
- Spark 还提供了一个 web UI 来监控集群,您可以通过将 master 节点端口转发到本地机器来在本地机器上访问它。
- 例如,如果 master 节点在
cpu1
上运行,则可以在本地计算机终端上运行以下代码。
1 2
ssh -t -t <USERNAME>@<LOGIN_NODE_IP> -L 8080:localhost:8080 \ -i <PRIVATE_KEY_LOCATION> ssh cpu1 -L 8080:127.0.0.1:8080
- 然后就可以在本地机器上的 Web 浏览器上使用地址 http://localhost:8080/ 访问 Spark Web UI。
- 例如,如果 master 节点在
# 三、总结
在本文中,我们介绍了如何在 HPC 集群上部署和运行 Apache Spark 集群。通过遵循本指南中的步骤,你应该能够成功地在 HPC 环境中运行 Spark 作业。请注意,根据你的具体 HPC 环境和配置,可能需要进行一些调整。
注释
Spark 官方文档 是一个非常有用的工具,通过它可以帮助你找到 Spark 的具体说明并解决问题。所以实际遇到问题时要多使用它。