如何搭建spark yarn模式的集群

1. 环境准备

  • 节点规划 :假设有三个节点,分别为 masterslave1slave2master 节点同时作为 Hadoop 的 NameNode 和 ResourceManager,slave1slave2 作为 DataNode 和 NodeManager。

  • 安装 JDK :确保所有节点都安装了 Java 8 或更高版本,并且配置好 JAVA_HOME 环境变量。

    示例:设置 JAVA_HOME

    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
    export PATH=PATH:JAVA_HOME/bin

  • 配置 SSH 免密登录 :在 master 节点上生成 SSH 密钥,并将公钥分发到所有节点,包括 master 自身。

    在 master 节点生成密钥

    ssh-keygen -t rsa

    将公钥复制到所有节点

    ssh-copy-id master
    ssh-copy-id slave1
    ssh-copy-id slave2

2. 安装和配置 Hadoop

2.1 下载和解压 Hadoop

从 Apache 官网下载 Hadoop 3.x 版本,并解压到指定目录。

复制代码
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
tar -zxvf hadoop-3.3.4.tar.gz -C /usr/local
cd /usr/local
ln -s hadoop-3.3.4 hadoop
2.2 配置 Hadoop 环境变量

/etc/profile~/.bashrc 中添加以下内容:

复制代码
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

使配置生效:

复制代码
source /etc/profile
2.3 配置 Hadoop 核心文件
  • core-site.xml

    <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop/tmp</value> </property> </configuration>
  • hdfs-site.xml

xml

复制代码
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/usr/local/hadoop/hdfs/namenode</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/local/hadoop/hdfs/datanode</value>
    </property>
</configuration>
  • mapred-site.xml

xml

复制代码
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
  • yarn-site.xml

xml

复制代码
<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>
2.4 配置从节点

$HADOOP_HOME/etc/hadoop/slaves 文件中添加从节点的主机名:

plaintext

复制代码
slave1
slave2
2.5 格式化 NameNode

master 节点上执行以下命令:

bash

复制代码
hdfs namenode -format
2.6 启动 Hadoop 集群

master 节点上启动 HDFS 和 YARN:

bash

复制代码
start-dfs.sh
start-yarn.sh

3. 安装和配置 Spark

3.1 下载和解压 Spark

从 Apache 官网下载 Spark 3.x 版本,并解压到指定目录。

bash

复制代码
wget https://downloads.apache.org/spark/spark-3.3.2/spark-3.3.2-bin-hadoop3.tgz
tar -zxvf spark-3.3.2-bin-hadoop3.tgz -C /usr/local
cd /usr/local
ln -s spark-3.3.2-bin-hadoop3 spark
3.2 配置 Spark 环境变量

/etc/profile~/.bashrc 中添加以下内容:

bash

复制代码
export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

使配置生效:

bash

复制代码
source /etc/profile
3.3 配置 Spark 核心文件

bash

复制代码
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
export SPARK_EXECUTOR_CORES=2
export SPARK_EXECUTOR_MEMORY=2G
export SPARK_DRIVER_MEMORY=1G
  • spark-defaults.conf

plaintext

复制代码
spark.master yarn
spark.submit.deployMode cluster
3.4 分发 Spark 到所有节点

将 Spark 目录复制到所有节点:

bash

复制代码
scp -r /usr/local/spark slave1:/usr/local
scp -r /usr/local/spark slave2:/usr/local

4. 验证集群

master 节点上运行一个简单的 Spark 应用程序:

bash

复制代码
spark-submit --class org.apache.spark.examples.SparkPi \
    --master yarn \
    --deploy-mode cluster \
    $SPARK_HOME/examples/jars/spark-examples_2.12-3.3.2.jar 10

如果应用程序成功运行并输出结果,则说明 Spark YARN 模式集群搭建成功。

5. 常见问题及解决方法

  • 网络问题:确保所有节点之间可以相互 ping 通,并且防火墙已开放必要的端口。
  • 权限问题:确保所有节点上的 Hadoop 和 Spark 目录具有正确的权限。
  • 配置问题 :检查所有配置文件是否正确,特别是 core-site.xmlhdfs-site.xmlyarn-site.xmlspark-env.sh
相关推荐
深蓝电商API5 小时前
分布式事务在跨境交易中的解决方案
分布式·跨境电商·代购系统·反向海淘·代购平台·跨境代购
藦卡机器人5 小时前
中国工业机器人发展现状
大数据·人工智能·机器人
Simon_lca6 小时前
突破合规瓶颈:ZDHC Supplier to Zero(工厂零排放 - 进阶型)体系全攻略
大数据·网络·人工智能·分类·数据挖掘·数据分析·零售
黄焖鸡能干四碗8 小时前
网络安全建设实施方案(Word文件参考下载)
大数据·网络·人工智能·安全·web安全·制造
云境筑桃源哇9 小时前
马踏春风 为爱启航 | 瑞派宠物医院(南部新城旗舰店)盛大开业!打造宠物医疗新标杆!
大数据·宠物
我真会写代码9 小时前
从入门到精通:Kafka核心原理与实战避坑指南
分布式·缓存·kafka
xixixi7777710 小时前
2026 年 03 月 20 日 AI+通信+安全行业日报(来更新啦)
大数据·人工智能·安全·ai·大模型·通信
F36_9_10 小时前
大数据治理平台选型避坑:2026 年 8 大主流系统实测
大数据·数据治理
成长之路51410 小时前
【实证分析】A股上市公司企业劳动力需求数据集(2000-2023年)
大数据
奔跑的呱呱牛10 小时前
GeoJSON 在大数据场景下为什么不够用?替代方案分析
java·大数据·servlet·gis·geojson