Spark on Yarn 多机集群部署

Spark on Yarn 多机集群部署

1. 规划机器角色

服务器 IP 地址 角色
Master 192.168.1.100 NameNode + ResourceManager + Spark Master
Worker1 192.168.1.101 DataNode + NodeManager + Spark Worker
Worker2 192.168.1.102 DataNode + NodeManager + Spark Worker

2. 配置所有机器

2.1 安装 Java

所有节点 上执行:

bash 复制代码
sudo apt update
sudo apt install -y openjdk-8-jdk

验证 Java:

bash 复制代码
java -version

2.2 免密 SSH

Master 节点执行:

bash 复制代码
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa

然后将公钥 id_rsa.pub 复制到 所有 节点

bash 复制代码
ssh-copy-id hadoop@192.168.1.100
ssh-copy-id hadoop@192.168.1.101
ssh-copy-id hadoop@192.168.1.102

验证:

bash 复制代码
ssh hadoop@192.168.1.100
ssh hadoop@192.168.1.101
ssh hadoop@192.168.1.102

3. 安装 Hadoop 并配置 Yarn

3.1 在所有节点安装 Hadoop

复制代码
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
tar -xzf hadoop-3.3.6.tar.gz
sudo mv hadoop-3.3.6 /usr/local/hadoop

3.2 配置 Master 节点

Master(192.168.1.100)上:

bash 复制代码
vim ~/.bashrc

添加:

bash 复制代码
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
export SPARK_HOME=/usr/local/spark
export PATH=$SPARK_HOME/sbin:$PATH

复制到 Worker 节点

bash 复制代码
scp ~/.bashrc hadoop@192.168.1.101:~/
scp ~/.bashrc hadoop@192.168.1.102:~/

在 所有节点 执行

bash 复制代码
source ~/.bashrc

3.3 配置 core-site.xml

bash 复制代码
vim $HADOOP_HOME/etc/hadoop/core-site.xml

Master 上配置

bash 复制代码
xml<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://192.168.1.100:9000</value>
    </property>
</configuration>

分发到 Worker

bash 复制代码
scp $HADOOP_HOME/etc/hadoop/core-site.xml hadoop@192.168.1.101:$HADOOP_HOME/etc/hadoop/
scp $HADOOP_HOME/etc/hadoop/core-site.xml hadoop@192.168.1.102:$HADOOP_HOME/etc/hadoop/

3.4 配置 hdfs-site.xml

bash 复制代码
vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml

Master 配置

bash 复制代码
xml<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
</configuration>

分发到 Worker

bash 复制代码
scp $HADOOP_HOME/etc/hadoop/hdfs-site.xml hadoop@192.168.1.101:$HADOOP_HOME/etc/hadoop/
scp $HADOOP_HOME/etc/hadoop/hdfs-site.xml hadoop@192.168.1.102:$HADOOP_HOME/etc/hadoop/

3.5 配置 Yarn

Master 配置 yarn-site.xml

bash 复制代码
vim $HADOOP_HOME/etc/hadoop/yarn-site.xml
xml<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>192.168.1.100</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

分发到 Worker

bash 复制代码
scp $HADOOP_HOME/etc/hadoop/yarn-site.xml hadoop@192.168.1.101:$HADOOP_HOME/etc/hadoop/
scp $HADOOP_HOME/etc/hadoop/yarn-site.xml hadoop@192.168.1.102:$HADOOP_HOME/etc/hadoop/

3.6 配置 slaves

bash 复制代码
vim $HADOOP_HOME/etc/hadoop/slaves

添加:

bash 复制代码
192.168.1.101
192.168.1.102

3.7 启动 Hadoop

bash 复制代码
hdfs namenode -format
start-dfs.sh
start-yarn.sh

如果遇到"ERROR: JAVA_HOME is not set and could not be found"的报错信息,执行下面的语句:

bash 复制代码
sudo vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
#保存后将文件分发到Worker
scp $HADOOP_HOME/etc/hadoop/hadoop-env.sh test@192.168.1.101:$HADOOP_HOME/etc/hadoop/
scp $HADOOP_HOME/etc/hadoop/hadoop-env.sh test@192.168.1.102:$HADOOP_HOME/etc/hadoop/

验证:

bash 复制代码
jps

4. 安装 Spark

4.1 在所有节点安装 Spark

复制代码
wget https://archive.apache.org/dist/spark/spark-3.4.1/spark-3.4.1-bin-hadoop3.tgz
tar -xzf spark-3.4.1-bin-hadoop3.tgz
sudo mv spark-3.4.1-bin-hadoop3 /usr/local/spark

分发 Spark 到 Worker

复制代码
scp -r /usr/local/spark hadoop@192.168.1.101:/usr/local/
scp -r /usr/local/spark hadoop@192.168.1.102:/usr/local/

4.2 配置 Spark

修改 spark-env.sh

bash 复制代码
vim $SPARK_HOME/conf/spark-env.sh

添加:

bash 复制代码
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_MASTER_HOST=192.168.1.100

分发到 Worker

bash 复制代码
scp $SPARK_HOME/conf/spark-env.sh hadoop@192.168.1.101:$SPARK_HOME/conf/
scp $SPARK_HOME/conf/spark-env.sh hadoop@192.168.1.102:$SPARK_HOME/conf/

5. 启动 Spark 集群

Master 节点启动:

bash 复制代码
start-history-server.sh

在 Worker1、Worker2 上:

bash 复制代码
start-slave.sh spark://192.168.1.100:7077

6. 提交 Spark 作业

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

访问 UI:

  • Hadoop ResourceManager UI: http://192.168.1.100:8088
  • Spark History Server UI: http://192.168.1.100:18080
    ###########################################################################################################
    今日推荐
    小说:《灰烬世界》
    简介:无女主,东方克苏鲁,无系统,不无敌,怪诞美学,非规则怪谈,科技修真) 老爷子说过,有道行的人或者妖怪邪祟,他们死后会化作一捧灰,被称之为秽灰。 秽灰里蕴藏着他们毕生能量,食之,便可添命灯,增寿命。 若是放任不管,便为秽土转生! 不过有一种例外,他们从秽灰里生长出来,长着人的模样,却不是人的思想。 他们主张无神论,想颠覆世间,想扳倒众神,他们把器物拆解,拼装,组合,造物,打造出没有智慧的生命,供他们奴役。(又名怪诞修仙学)
相关推荐
夜影风3 分钟前
我国AI智能体产业发展洞察:为何能在AI应用层实现“换道超车“
大数据·人工智能
AvatarAI_Walker25 分钟前
2026年7月安徽本地健康IP孵化行业观察:不同需求下的服务方向梳理
大数据·网络·tcp/ip·搜索引擎·精选
xlrqx27 分钟前
2026年平顶山家电清洗培训设备是否齐全依据多因素来判断
大数据·python
Georgeviewer8 小时前
商业落地评测|实体门店GEO优化性价比与服务体系深度复盘
大数据·人工智能
腻害兔9 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
GIR1239 小时前
官方出品 | 多通道土壤呼吸测量系统市场现状与十五五规划深度报告:行业分析+趋势预测全收录
大数据·人工智能·机器学习
南讯股份Nascent11 小时前
洽洽全域会员项目启动会圆满召开
大数据·人工智能
大郭鹏宇11 小时前
基于 LangGraph 构建智能分诊系统(一):项目概述与环境搭建
大数据·人工智能·microsoft·langchain
Database_Cool_12 小时前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
天天爱吃肉821815 小时前
【电源拆解:跟着问答逐一认识开关适配器PCB元器件】
大数据·人工智能·python·功能测试·嵌入式硬件·汽车