配之前准备
将scala-2.12.13.tgz和spark-3.1.1-bin-hadoop2.7.tgz安装包上传到xshell
在xshell上解压压缩包
输入解压命令:
tar -zxvf scala-2.12.13.tgz
tar -zxvf spark-3.1.1-bin-hadoop2.7.tgz
配置
1、配置环境变量
vim .bashrc
在文件末尾添加如下内容:
#spark
export SPARK_HOME=/home/ZQ/spark-3.1.1-bin-hadoop2.7
export PATH=${SPARK_HOME}/bin:$PATH
#SCALA
export SCALA_HOME=/home/ZQ/scala-2.12.13
export PATH=${SCALA_HOME}/bin:$PATH
并将环境变量文件传到所有节点(以62为例)
scp -r .bashrc ZQ@10.103.105.62:/home/ZQ
使环境变量生效(每个节点都需要使环境变量生效)
source .bashrc
2、配置文件$SPARK_HOME/conf/spark-env.sh
cd spark-3.1.1-bin-hadoop2.7/conf
vim spark-env.sh
在文件末尾加上:
export JAVA_HOME=/home/ZQ/jdk1.8.0_271
export SCALA_HOME=/home/ZQ/scala-2.12.13
export SPARK_WORKER_MEMORY=30G
export SPARK_WORKER_CORES=16
export SPARK_WORKER_INSTANCES=1
export SPARK_MASTER_IP=10.103.105.62
export SPARK_DIST_CLASSPATH=$(/home/ZQ/hadoop-2.7.6/bin/hadoop classpath)
export HADOOP_CONF_DIR=/home/ZQ/hadoop-2.7.6/etc/hadoop/
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 "
/* SPARK_WORKER_MEMORY, 可参与计算的内存大小*/
/* SPARK_WORKER_CORES, 可参与计算的核心个数*/
/* SPARK_WORKER_INSTANCES, 该节点Worker实例的个数*/
/* SPARK_MASTER_IP, 主节点的IP地址*/
/* SPARK_DIST_CLASSPATH, 依赖包的路径,可设置多个路径*/
/* HADOOP_CONF_DIR, Hadoop配置文件路径*/
/* SPARK_HISTORY_OPTS, 历史作业相关的配置信息(实际上有很多配置项),spark.history.ui.portweb监控端口*/
3、配置文件配置文件$SPARK_HOME/conf/workers
cd spark-3.1.1-bin-hadoop2.7/conf
vim workers
在文件末尾增加所有从节点的机器名
westgisB059
westgisB060
westgisB061
westgisB063
4、配置文件远程拷贝
4.1 为了使Spark集群中的每个计算任务能够直接访问HDFS,还需要将$HADOOP_HOME/etc/hadoop中的配置文件hdfs-site.xml和core-site.xml拷贝到$SPARK_HOME/conf目录下
cd hadoop-2.7.6/etc/hadoop/
scp -r hdfs-site.xml ZQ@10.103.105.63:/home/ZQ/spark-3.1.1-bin-hadoop2.7/conf/
scp -r core-site.xml ZQ@10.103.105.63:/home/ZQ/spark-3.1.1-bin-hadoop2.7/conf/
4.2 将scala-2.12.13和spark-3.1.1-bin-hadoop2.7拷贝到每个节点(以62节点为例)
scp -r scala-2.12.13 ZQ@10.103.105.62:/home/ZQ
scp -r spark-3.1.1-bin-hadoop2.7 ZQ@10.103.105.62:/home/ZQ
集群的操作和查看
1、启动集群
start-dfs.sh
$SPARK_HOME/sbin/start-master.sh
$SPARK_HOME/sbin/start-workers.sh
2、监控界面查看是否成功
主节点:
从节点:
http://10.103.105.62:8080
3、关闭集群
$SPARK_HOME/sbin/stop-workers.sh
$SPARK_HOME/sbin/stop-master.sh
stop-dfs.sh
错误排查方法
1 查看端口是否开启
运行命令 netstat–tunlp|grep 8080
查看8080端口是否开启。
2 查看占用端口的进程
运行命令lsof–i:8080
查看8080端口被那个进程占用。
3 查看 运行日志
Spark主节点日志文件路径:
$SPARK_HOME/logs/*-Master-.log
$SPARK_HOME/logs/*-Master-.out
Spark从节点日志文件路径:
$SPARK_HOME/logs/*-Worker-.log
$SPARK_HOME/logs/*-Worker-.out
补充:(Spark-server的配置)
(配置后,使用submit或spark-shell提交的任务在任务执行完成之后,可以通过18080端口查看web界面)
配置文件
1、配置spark-env.sh
cd spark-3.1.1-bin-hadoop2.7/conf/
vim spark-env.sh
修改文件:
export JAVA_HOME=/home/ZQ/jdk1.8.0_271
export SCALA_HOME=/home/ZQ/scala-2.12.13
export SPARK_WORKER_MEMORY=5G
export SPARK_WORKER_CORES=3
export SPARK_WORKER_INSTANCES=1
export SPARK_MASTER_IP=10.103.105.62
export SPARK_DIST_CLASSPATH=$(/home/ZQ/hadoop-2.7.6/bin/hadoop classpath)
export HADOOP_CONF_DIR=/home/ZQ/hadoop-2.7.6/etc/hadoop/
#export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 "
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=50 -Dspark.history.fs.logDirectory=hdfs://10.103.105.62:8020/spark/data/sparklog"
2、配置文件spark-defaults.conf
将文件spark-defaults.conf.template文件模板重命名为spark-defaults.conf
mv spark-defaults.conf.template spark-defaults.conf
vim spark-defaults.conf
修改文件:
spark.eventLog.enabled true
spark.eventLog.dir hdfs://10.103.105.62:8020/spark/data/sparklog
spark.eventLog.compress true
spark.history.fs.logDirectory hdfs://10.103.105.62:8020/spark/data/sparklog
注意: 配置了spark-defaults.conf之后进入spark-shell时需要先启动HDFS而且HDFS上需要创建有spark/data/sparklog,不然会报错(可以主节点配置,从节点不配置,则从节点进入spark-shell时不用启动HDFS也不会报错)
3、创建目录
hadoop fs -mkdir -p /spark/data/sparklog
启动HDFS后通过监控界面http://10.103.105.62:50070可以看到所创建的目录
4、查看:
启动HDFS
cd
satrt-dfs.sh
启动 history-server.sh
cd spark-3.1.1-bin-hadoop2.7/
./sbin/start-history-server.sh
jps
jps后可以看到HistoryServer
通过监控界面http://10.103.105.62:18080可以看到任务执行完后的结果
关闭 history-server.sh
./sbin/stop-history-server.sh
关闭HDFS
cd
stop-dfs.sh