基于CentOS7的Spark on YARN模式集群部署

本文详细介绍了如何在三台服务器上部署Spark集群,包括前提条件、Spark安装步骤、配置过程及环境变量设置。同时,提供了启动集群的方法和验证安装成功的途径,如检查进程和WebUI。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3台服务器部署结构

hostnamehadoopSvr1hadoopSvr3hadoopSvr4
IP10.62.124.4110.62.124.4310.62.124.44
sparkmaster/workerworkerworker
sparkHistoryServer

目录规划

/data
	|__ spark
			|__ pids
			|__ logs
			|__ tmp

其中,Spark中暂存空间的使用目录SPARK_LOCAL_DIRS
/data/spark/tmp

一、前提条件

1、确保集群中已经安装好了hadoop(2.7及以上版本);

Hadoop集群安装参考:https://blog.youkuaiyun.com/wangkai_123456/article/details/87185339

2、确保集群中每台机器上已经安装好了scala(2.12及以上版本);

scala安装参考:https://blog.youkuaiyun.com/u011563666/article/details/79298314

二、安装Spark-2.4.0

1、下载Spark安装包,下载地址:http://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.7.tgz,以spark-2.4.0版本为例

2、将下载的Spark安装包放到/usr/local目录,解压缩安装包

tar zxvf spark-2.4.0-bin-hadoop2.7.tgz
mv spark-2.4.0-bin-hadoop2.7 spark //重命名目录

3、配置Spark

3.1 配置spark-defaults.conf

cd spark/conf    #进入spark配置目录
cp spark-defaults.conf.template spark-defaults.conf   #从配置模板复制
vi spark-defaults.conf     #添加配置内容

在spark-defaults.conf末尾添加以下内容(这是我的配置,你可以自行修改):

# Configuring the Dynamic Resource Allocation
spark.dynamicAllocation.enabled	true

# Configuring the External Shuffle Service
spark.shuffle.service.enabled	true

spark.driver.extraClassPath	/usr/local/parquet-hadoop-jars/*
spark.executor.extraClassPath	/usr/local/parquet-hadoop-jars/*
spark.yarn.jars 		hdfs://hadoopSvr1:8020/spark-jars/*

spark.yarn.maxAppAttempts	2

# Configuring spark history server
spark.eventLog.enabled           	true
spark.eventLog.dir             	 	hdfs://hadoopSvr1:8020/tmp/spark-logs
spark.yarn.historyServer.address	hadoopSvr1:18080

3.2、配置spark-env.sh(Spark运行环境)

cd spark/conf    #进入spark配置目录
cp spark-env.sh.template spark-env.sh   #从配置模板复制
vi spark-env.sh     #添加配置内容

在spark-env.sh末尾添加以下内容(这是我的配置,你可以自行修改):

#如果下载的包类型是“Pre-build with user-provided Hadoop[can use with most Hadoop distributions]”,则需要在配置文件spark-env.sh中第一行添加如下配置信息:
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop-3.2.0/bin/hadoop classpath)

export JAVA_HOME=/usr/java/jdk1.8.0_111
export SCALA_HOME=/usr/local/scala

export HADOOP_HOME=/usr/local/hadoop-3.2.0
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
#设置hadoopSvr1主机为master节点
export SPARK_MASTER_HOST=hadoopSvr1    
#作业可使用的内存容量
export SPARK_WORKER_MEMORY=8G
#Spark中暂存空间的使用目录
export SPARK_LOCAL_DIRS=/data/spark/tmp
#driver进程使用的内存容量
export SPARK_DRIVER_MEMORY=1G
# Generic options
export SPARK_PID_DIR=/data/spark/pids
export SPARK_LOG_DIR=/data/spark/logs
# Configuring spark history server
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.fs.logDirectory=hdfs://hadoopSvr1:8020/tmp/spark-logs -Dspark.history.fs.cleaner.enabled=true"

注:在设置Worker进程的CPU个数和内存大小,要注意机器的实际硬件条件,如果配置的超过当前Worker节点的硬件条件,Worker进程会启动失败。

3.3、配置Spark从节点,修改slaves文件

cp slaves.template slaves
vi slaves

修改其内容如下:

hadoopSvr1
hadoopSvr3
hadoopSvr4

4、配置Spark环境变量

vi /etc/profile

打开后,在文档最下方添加如下配置:

export SPARK_HOME=/usr/local/spark
export PATH=$SPARK_HOME/bin:$PATH

:wq!保存退出,执行如下命令,使更改生效

source /etc/profile

5、复制Spark配置好的包到其他Linux主机

[root@hadoopSvr3 local]# scp -r root@10.62.124.41:/usr/local/spark .
[root@hadoopSvr4 local]# scp -r root@10.62.124.41:/usr/local/spark .

三、启动Spark集群

在hadoopSvr1主机上执行命令:start-all.sh
启动HistoryServer:start-history-server.sh

四、验证Spark是否安装成功

1、用jps检查,在 master 上应该有以下几个进程:

[root@hadoopSvr1 sbin]# jps
14273 NodeManager
12930 Jps
17465 Daemon
4905 DataNode
10011 Master
10251 Worker
4716 NameNode

在 slave 上应该有以下几个进程:

[root@hadoopSvr3 conf]# jps
14291 Elasticsearch
4500 Worker
1605 DataNode
4920 Jps
31530 ResourceManager
31183 NodeManager

2、登录WebUI查看spark集群信息

http://hadoopSvr1:8001/  #默认配置是8080端口,由于hadoopSvr1主机上8080端口被占用,所以我配置SPARK_MASTER_WEBUI_PORT=8001,具体配置方法如下:
#打开master文件

vi sbin/start-master.sh

在vi命令模式下输入 :/8080

if [ "$SPARK_MASTER_WEBUI_PORT" = "" ]; then
  SPARK_MASTER_WEBUI_PORT=8080
fi

找到后修改该端口为8001
命令模式下保存退出
重启一遍

sbin/start-all.sh

http://hadoopSvr1:8001页面就可以访问了

五、注意事项

  • 启动顺序:需要先启动spark,再启动yarn
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值