以下是配置 Spark 以 YARN 模式运行的详细步骤:
环境准备
- 安装 JDK :所有节点需安装 JDK 1.8 或以上版本,并配置环境变量,确保
JAVA_HOME
正确指向安装路径。 - 安装 Hadoop :安装 Hadoop(推荐 3.x 版本),并配置好 YARN。在
yarn-site.xml
中启用资源调度,设置yarn.resourcemanager.hostname
为主节点 IP 或主机名。同时,设置HADOOP_HOME
和HADOOP_CONF_DIR
环境变量。 - 安装 Spark :下载与 Hadoop 兼容的 Spark 版本(如 Spark 3.5.5 对应 Hadoop 3.x),解压至统一目录(如
/opt/spark
),并配置SPARK_HOME
环境变量。
修改 Spark 配置文件
-
修改
spark-env.sh
:在 Spark 的conf
目录下,重命名spark-env.sh.template
为spark-env.sh
,并添加以下配置以关联 Hadoop 和 YARN:export JAVA_HOME=/opt/java/jdk8 export HADOOP_HOME=/opt/hadoop/hadoop-3.2.2 export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export SPARK_DIST_CLASSPATH=$(hadoop classpath)
-
修改
spark-defaults.conf
:在 Spark 的conf
目录下,重命名spark-defaults.conf.template
为spark-defaults.conf
,并添加以下配置:spark.master yarn spark.eventLog.enabled true spark.eventLog.dir hdfs://master:9000/spark-logs spark.history.fs.logDirectory hdfs://master:9000/spark-logs spark.yarn.resourcemanager.address master:8032 spark.yarn.historyServer.address http://master:18080 spark.yarn.stagingDir hdfs://master:9000/spark-Staging
启动服务
-
启动 Hadoop 与 YARN 服务 :
- 启动 HDFS:
start-dfs.sh
- 启动 YARN:
start-yarn.sh
确认 ResourceManager 和 NodeManager 进程正常运行。
- 启动 HDFS:
-
启动 Spark 历史服务器 :在启动 Spark 历史服务器之前,需要在 HDFS 创建对应的目录:
hdfs dfs -mkdir -p /spark-logs hdfs dfs -mkdir -p /spark-Staging
提交测试任务
使用 spark-submit
提交示例程序,验证集群是否正常工作。例如:
spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
$SPARK_HOME/examples/jars/spark-examples_2.12-3.5.5.jar 100
检查 YARN Web UI(默认端口 8088)中任务状态和日志输出。