在你的 3 台服务器(16 核、128GB 内存,1TB SSD 和 4TB SATA)上部署 Spark 集群是一个非常合适的选择。以下是如何安装和配置 Spark 集群的步骤,使用 Standalone 模式 或 Spark on YARN 模式运行。
在 Spark 集群中,通常包含以下组件:
在你的 3 台服务器上,可以按照以下规划:
你也可以将 Spark Master 配置为高可用(HA),但这里以标准的单 Master 模式为例。
以下是 Spark 集群安装和配置的详细步骤。
Spark 需要 Java 环境(建议使用 OpenJDK 11):
sudo apt update
sudo apt install openjdk-11-jdk -y
验证 Java 安装:
java -version
Spark 依赖 Scala 运行时库:
sudo apt install scala -y
验证 Scala 安装:
scala -version
如果你需要运行 PySpark 作业:
sudo apt install python3 python3-pip -y
从 Apache 官方网站下载 Spark:
wget https://downloads.apache.org/spark/spark-3.4.1/spark-3.4.1-bin-hadoop3.tgz
/opt
tar -xvzf spark-3.4.1-bin-hadoop3.tgz
sudo mv spark-3.4.1-bin-hadoop3 /opt/spark
编辑 ~/.bashrc
文件:
nano ~/.bashrc
添加以下内容:
export SPARK_HOME=/opt/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
使环境变量生效:
source ~/.bashrc
注意:以上步骤需要在所有 3 台服务器上执行。
Spark 的配置文件位于 /opt/spark/conf
目录下。
spark-env.sh
复制模板文件:
cp /opt/spark/conf/spark-env.sh.template /opt/spark/conf/spark-env.sh
编辑 spark-env.sh
:
nano /opt/spark/conf/spark-env.sh
添加以下内容:
export SPARK_MASTER_HOST=server1_ip # 替换为 Spark Master 的 IP
export SPARK_WORKER_CORES=8 # 每个 Worker 使用 8 核心
export SPARK_WORKER_MEMORY=64g # 每个 Worker 使用 64GB 内存
export SPARK_WORKER_DIR=/opt/spark/work
注意:
SPARK_MASTER_HOST
只需要在 Master 节点(Server 1)上设置,其他配置需在所有节点上设置。
slaves
文件复制模板文件:
cp /opt/spark/conf/slaves.template /opt/spark/conf/slaves
编辑 slaves
文件:
nano /opt/spark/conf/slaves
添加 Worker 节点的 IP 地址(每行一个):
server1_ip
server2_ip
server3_ip
在 Server 1 上启动 Spark Master:
start-master.sh
在所有 3 台服务器上启动 Spark Worker:
start-worker.sh spark://server1_ip:7077
说明:
spark://server1_ip:7077
是 Spark Master 的地址。
Spark 提供了 Web 界面来监控集群状态:
http://server1_ip:8080
Spark 自带的示例程序可以用于测试集群:
/opt/spark/bin/spark-submit --master spark://server1_ip:7077 \
--class org.apache.spark.examples.SparkPi \
/opt/spark/examples/jars/spark-examples_2.13-3.4.1.jar 100
如果你需要运行 Python 作业,可以使用 PySpark:
pyspark --master spark://server1_ip:7077
在 PySpark shell 中测试:
sc.parallelize(range(1, 101)).sum()
为了提高集群的容错能力,可以配置 Spark Master 的高可用(HA)。需要使用 Zookeeper 来管理 Master 的选举。以下是简单的步骤:
安装 Zookeeper 集群(参考 Kafka 部署中的 Zookeeper 部分)。
修改 spark-env.sh
文件:
export SPARK_MASTER_HOST=server1_ip,server2_ip,server3_ip
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER \
-Dspark.deploy.zookeeper.url=server1_ip:2181,server2_ip:2181,server3_ip:2181 \
-Dspark.deploy.zookeeper.dir=/spark"
启动多个 Spark Master。
在你的服务器中有两块硬盘(1TB SSD 和 4TB SATA),你可以规划如下:
/opt/spark/work
),提高任务执行 I/O 性能。在 spark-env.sh
中指定工作目录:
export SPARK_WORKER_DIR=/mnt/ssd/spark/work
通过上述步骤,你可以成功在 3 台服务器上部署一个高性能的 Spark 集群:
如果你需要更高的容错能力,可以通过配置 Zookeeper 实现 Spark Master 的高可用。此部署适用于开发、测试和生产环境,具有良好的扩展性和性能。