以下是Spark基于Yarn模式的集群搭建关键步骤(需先部署Hadoop Yarn集群):
一、环境准备
1. 确认Hadoop已运行
- 确保HDFS、Yarn ResourceManager和NodeManager正常启动。
2. 安装Java
- 所有节点安装JDK 8+,配置 JAVA_HOME 环境变量。
3. 关闭防火墙
bash
systemctl stop firewalld && systemctl disable firewalld
二、下载与配置Spark
1. 下载Spark包
- 官网下载对应Hadoop版本的Spark(如 spark-3.5.0-bin-hadoop3 ),上传至主节点。
2. 解压与配置
bash
tar -zxvf spark-3.5.0-bin-hadoop3.tgz -C /opt
cd /opt/spark-3.5.0-bin-hadoop3/conf
3. 修改配置文件
- spark-env.sh (新增或修改):
bash
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk # 实际JDK路径
export HADOOP_CONF_DIR=/etc/hadoop/conf # Hadoop配置目录
- spark-defaults.conf (若无则新建):
bash
spark.master yarn
spark.eventLog.enabled true
spark.eventLog.dir hdfs://nameservice1/spark-logs # HDFS日志路径(需提前创建)
三、分发Spark到所有节点
bash
scp -r /opt/spark-3.5.0-bin-hadoop3 slave1:/opt
scp -r /opt/spark-3.5.0-bin-hadoop3 slave2:/opt
- 确保所有节点 HADOOP_CONF_DIR 路径正确(与Hadoop配置一致)。
四、验证与提交任务
1. 测试HDFS连通性
- 在任意节点执行:
bash
hdfs dfs -mkdir -p /spark-logs # 创建日志目录(需与配置一致)
hdfs dfs -chmod -R 777 /spark-logs
2. 提交Spark任务到Yarn
bash
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \ # 可选client模式(默认)
--executor-memory 2g \
--num-executors 3 \
./examples/jars/spark-examples_*.jar 100
3. 查看任务状态
- Yarn Web界面: http://resourcemanager_ip:8088/cluster ,查看应用运行情况。
- Spark历史服务器(需配置 spark.history.fs.logDirectory ): http://master_ip:18080 。
注意事项
1. 资源分配
- 通过 --executor-memory 和 --executor-cores 控制单个Executor资源。
- Yarn全局资源需在 yarn-site.xml 中配置(如 yarn.nodemanager.resource.memory-mb )。
2. 日志存储
- 确保HDFS路径可写,否则任务可能失败。
3. 版本兼容性
- Spark与Hadoop版本需兼容(如Spark 3.5.x对应Hadoop 3.2+)。
4. 高可用性
- 若Yarn启用HA,需在 spark-defaults.conf 中配置 spark.yarn.resourceManager.address 为HA地址。