3台服务器部署结构
hostname | hadoopSvr1 | hadoopSvr3 | hadoopSvr4 |
---|---|---|---|
IP | 10.62.124.41 | 10.62.124.43 | 10.62.124.44 |
spark | master/worker | worker | worker |
spark | HistoryServer |
目录规划
/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