1. 环境准备
- 硬件:至少准备三台服务器,可使用虚拟机替代。
- 软件:确保所有节点安装了相同版本的 Java(建议 Java 8 或更高版本)和 Hadoop(包含 YARN)。
2. 安装和配置 Hadoop(YARN)
2.1 下载和解压 Hadoop
从 Apache 官网下载 Hadoop 压缩包,然后解压到指定目录。例如:
bash
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
tar -zxvf hadoop-3.3.6.tar.gz -C /usr/local/

2.2 配置 Hadoop
主要配置以下几个文件:
- core-site.xml:
xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value>
</property>
</configuration>
- hdfs-site.xml:
xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop-3.3.6/data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop-3.3.6/data/datanode</value>
</property>
</configuration>
- yarn-site.xml:
xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>resourcemanager</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
- mapred-site.xml:
xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
2.3 格式化 HDFS
在 NameNode 节点上执行:
bash
/usr/local/hadoop-3.3.6/bin/hdfs namenode -format
2.4 启动 Hadoop
在 NameNode 节点启动 HDFS:
bash
/usr/local/hadoop-3.3.6/sbin/start-dfs.sh
在 ResourceManager 节点启动 YARN:
bash
/usr/local/hadoop-3.3.6/sbin/start-yarn.sh
3. 安装和配置 Spark
3.1 下载和解压 Spark
从 Apache 官网下载 Spark 压缩包,然后解压到指定目录。例如:
bash
wget https://downloads.apache.org/spark/spark-3.4.1/spark-3.4.1-bin-hadoop3.tgz
tar -zxvf spark-3.4.1-bin-hadoop3.tgz -C /usr/local/
3.2 配置 Spark
编辑 spark-env.sh
文件:
bash
cp /usr/local/spark-3.4.1-bin-hadoop3/conf/spark-env.sh.template /usr/local/spark-3.4.1-bin-hadoop3/conf/spark-env.sh
添加以下内容:
bash
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HADOOP_CONF_DIR=/usr/local/hadoop-3.3.6/etc/hadoop
export SPARK_EXECUTOR_CORES=2
export SPARK_EXECUTOR_MEMORY=2g
export SPARK_DRIVER_MEMORY=1g
4. 测试 Spark on YARN
在 Spark 目录下执行以下命令提交一个简单的 Spark 应用:
bash
/usr/local/spark-3.4.1-bin-hadoop3/bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
/usr/local/spark-3.4.1-bin-hadoop3/examples/jars/spark-examples_2.12-3.4.1.jar \
10
5. 常见问题处理
- 网络问题:确保所有节点之间网络连通,防火墙允许 Hadoop 和 Spark 相关端口通信。
- 权限问题:确保运行 Hadoop 和 Spark 的用户有足够的权限访问相关目录和文件。
通过以上步骤,你就可以成功搭建一个 Spark YARN 模式的集群。