以下是的 Spark YARN 模式集群搭建步骤:
一、环境准备
1. 服务器规划
- 至少 3 台节点:1 台主节点(运行 HDFS NameNode、YARN ResourceManager),2 台从节点(运行 HDFS DataNode、YARN NodeManager)。
- 软件要求:JDK 1.8+、Hadoop 3.x(含 HDFS 和 YARN)、Spark 3.x。
2. 基础配置
- 关闭防火墙和 SELinux:
bash
systemctl stop firewalld && systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
- 配置主节点到从节点的 SSH 免密登录。
- 同步系统时间(如使用 ntpdate )。
二、安装与配置 Hadoop(YARN 依赖)
1. 解压安装
bash
tar -zxvf hadoop-3.x.tar.gz -C /opt/
mv /opt/hadoop-3.x /opt/hadoop
2. 配置环境变量
在 ~/.bashrc 中添加:
bash
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
执行 source ~/.bashrc 生效。
3. 修改核心配置文件
- hadoop-env.sh :指定 JDK 路径(如 export JAVA_HOME=/usr/java/jdk1.8.0_301 )。
- core-site.xml :
xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://主节点IP:9000</value>
</property>
- hdfs-site.xml :
xml
<property>
<name>dfs.replication</name>
<value>2</value> <!-- 数据副本数,根据节点数调整 -->
</property>
- yarn-site.xml :
xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>主节点IP</value>
</property>
4. 启动 Hadoop
bash
hdfs namenode -format # 首次初始化 namenode
start-dfs.sh # 启动 HDFS
start-yarn.sh # 启动 YARN
三、安装与配置 Spark
1. 解压安装
bash
tar -zxvf spark-3.x-bin-hadoop3.x.tgz -C /opt/
mv /opt/spark-3.x-bin-hadoop3.x /opt/spark
2. 配置环境变量
在 ~/.bashrc 中添加:
bash
export SPARK_HOME=/opt/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
执行 source ~/.bashrc 生效。
3. 修改 Spark 配置
- 复制并编辑 spark-env.sh :
bash
cp /opt/spark/conf/spark-env.sh.template /opt/spark/conf/spark-env.sh
echo "export HADOOP_CONF_DIR=/opt/hadoop/etc/hadoop" >> /opt/spark/conf/spark-env.sh
echo "export SPARK_MASTER_IP=主节点IP" >> /opt/spark/conf/spark-env.sh
- 编辑 slaves 文件(无后缀),添加从节点 IP(每行一个,如 从节点1IP 从节点2IP )。
4. 分发到从节点
bash
scp -r /opt/spark 从节点1IP:/opt/
scp -r /opt/spark 从节点2IP:/opt/
从节点执行 source ~/.bashrc 生效。
四、启动 Spark 集群(YARN 模式)
Spark on YARN 无需单独启动 Spark 集群,直接提交任务到 YARN 即可:
1. 提交任务示例
bash
spark-submit \
--master yarn \
--deploy-mode cluster \ # 集群模式(AM 运行在 YARN 中)
--executor-memory 2g \
--num-executors 2 \
/opt/spark/examples/jars/spark-examples_*.jar wordcount \
hdfs:///input.txt hdfs:///output
2. 验证
- 通过 YARN 界面(默认端口 8088 )查看任务运行状态。
- 通过 Spark 历史服务器(配置 spark.history.fs.logDirectory 并启动 start-history-server.sh )查看任务日志。
关键说明
- YARN 模式特点:Spark 任务直接运行在 YARN 资源管理器上,无需维护独立的 Spark 集群。
- 配置调优:根据服务器资源调整 yarn.nodemanager.resource.memory-mb (YARN 内存)和 Spark 任务参数(如 --executor-memory )。