搭建Spark on YARN集群的步骤
Spark on YARN模式允许Spark作业在Hadoop YARN资源管理器上运行,这样可以更好地与Hadoop生态系统集成并共享集群资源。以下是搭建Spark YARN集群的详细步骤:
前提条件
-
已安装并配置好Hadoop集群(包括HDFS和YARN)
-
所有节点已配置SSH免密登录
-
Java环境已安装(推荐JDK 8或11)
一、安装Spark
-
下载Spark:
-
从Spark官网下载与Hadoop版本兼容的Spark预编译包
-
例如:
wget https://dlcdn.apache.org/spark/spark-3.3.2/spark-3.3.2-bin-hadoop3.tgz
-
-
解压安装包:
bashtar -xzf spark-3.3.2-bin-hadoop3.tgz -C /opt/ ln -s /opt/spark-3.3.2-bin-hadoop3 /opt/spark
-
配置环境变量 (在所有节点):
在**
/etc/profile
** 或**~/.bashrc
**中添加:bashexport SPARK_HOME=/opt/spark export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
然后执行:
source /etc/profile
二、配置Spark
-
bash
cd $SPARK_HOME/conf cp spark-env.sh.template spark-env.sh
编辑
spark-env.sh
,添加:bashexport HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop export SPARK_EXECUTOR_MEMORY=2g export SPARK_DRIVER_MEMORY=1g
-
配置spark-defaults.conf:
bashcp spark-defaults.conf.template spark-defaults.conf
编辑
spark-defaults.conf
,添加:bashspark.master yarn spark.eventLog.enabled true spark.eventLog.dir hdfs://namenode:8020/spark-logs spark.history.fs.logDirectory hdfs://namenode:8020/spark-logs spark.yarn.jars hdfs://namenode:8020/spark/jars/*
-
上传Spark依赖到HDFS:
bashhdfs dfs -mkdir -p /spark/jars hdfs dfs -put $SPARK_HOME/jars/* /spark/jars/
三、配置YARN
-
确保YARN配置正确:
-
检查**
$HADOOP_HOME/etc/hadoop/yarn-site.xml
**: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> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>8192</value> <!-- 根据实际内存调整 --> </property>
-
-
重启YARN服务:
bashstop-yarn.sh start-yarn.sh
四、验证安装
-
运行Spark Pi示例:
bashspark-submit --class org.apache.spark.examples.SparkPi \ --master yarn \ --deploy-mode cluster \ $SPARK_HOME/examples/jars/spark-examples_2.12-3.3.2.jar 100
-
查看YARN Web UI :
访问**
http://<yarn-resourcemanager>:8088
**查看作业状态 -
查看Spark History Server(可选):
bash$SPARK_HOME/sbin/start-history-server.sh
访问**
http://<spark-history-server>:18080
**
五、常见问题解决
-
内存不足错误:
-
调整**
spark-submit
** 的**--executor-memory
** 和**--driver-memory
**参数 -
增加YARN的**
yarn.nodemanager.resource.memory-mb
**值
-
-
类路径问题:
- 确保**
HADOOP_CONF_DIR
** 和**YARN_CONF_DIR
**正确指向Hadoop配置目录
- 确保**
-
网络连接问题:
-
检查所有节点之间的网络连接
-
确保防火墙不会阻止必要的端口
-
-
权限问题:
-
确保HDFS目录有正确的权限
-
使用**
hdfs dfs -chmod
**调整权限
-
通过以上步骤,您应该能够成功搭建一个Spark on YARN集群。根据实际环境和需求,可能需要调整内存配置和其他参数