以下是搭建 Spark on YARN 模式集群的详细步骤:
一、环境准备
- 操作系统:建议使用 CentOS、Ubuntu 等主流 Linux 发行版。
- Java 环境:安装 JDK 1.8 或以上版本。
- Hadoop 集群:确保已经搭建并正常运行的 Hadoop 集群。
二、安装 Spark
- 下载并解压 Spark:
(根据实际版本号替换tar -zxvf spark-3.x.x-bin-hadoop3.x.tgz -C /opt mv /opt/spark-3.x.x-bin-hadoop3.x /opt/spark
3.x.x
和3.x
)。 - 配置环境变量:
在/etc/profile
或~/.bashrc
文件中添加:
然后执行export SPARK_HOME=/opt/spark export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH
source /etc/profile
或source ~/.bashrc
。
三、配置 Spark on YARN
- 配置
spark-env.sh
:- 复制模板文件:
cp /opt/spark/conf/spark-env.sh.template /opt/spark/conf/spark-env.sh
- 编辑文件,添加以下内容:
(将export JAVA_HOME=/path/to/java export HADOOP_CONF_DIR=/path/to/hadoop/etc/hadoop export YARN_CONF_DIR=/path/to/hadoop/etc/hadoop
/path/to/java
和/path/to/hadoop
替换为实际路径)。
- 复制模板文件:
- 配置
spark-defaults.conf
:- 复制模板文件:
cp /opt/spark/conf/spark-defaults.conf.template /opt/spark/conf/spark-defaults.conf
- 编辑文件,添加以下配置:
(将spark.master yarn spark.eventLog.enabled true spark.eventLog.dir hdfs://namenode:8020/spark/eventLogs spark.yarn.historyServer.address historyserver:18080 spark.yarn.jars hdfs://namenode:8020/spark/jars/*
namenode
和historyserver
替换为实际的主机名或 IP 地址)。
- 复制模板文件:
- 上传 Spark JAR 包到 HDFS:
这样可以避免每次提交作业时重新上传。hdfs dfs -mkdir -p /spark/jars hdfs dfs -put /opt/spark/jars/* /spark/jars/
- 配置 YARN 的
yarn-site.xml
:- 确保 Hadoop 的
yarn-site.xml
文件中包含以下配置:<property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property>
- 将修改后的
yarn-site.xml
文件分发到集群的所有节点。
- 确保 Hadoop 的
四、分发配置文件
- 使用工具(如
scp
或自定义脚本)将/opt/spark
目录和配置文件分发到所有节点,确保集群中各节点的 Spark 安装和配置一致。
五、启动集群
- 启动 Hadoop 集群:
start-dfs.sh start-yarn.sh
- 启动 Spark History Server:
/opt/spark/sbin/start-history-server.sh
六、测试集群
- 提交一个简单的 Spark 作业测试集群是否正常运行:
如果作业成功运行并输出结果,则说明集群搭建成功。spark-submit --master yarn --deploy-mode client examples/src/main/python/pi.py 1000
注意事项
- 确保所有节点的网络连通性良好,主机名和 IP 地址配置正确。
- 根据实际需求调整 Spark 和 YARN 的资源配置,例如内存和 CPU 核心数。
- 如果遇到问题,可以查看 Spark 和 YARN 的日志文件进行排查。
通过以上步骤,你可以成功搭建一个 Spark on YARN 模式的集群。