需要提前部署 hadoop 并启动
1、解压软件包
cd /opt/software
tar -zxvf spark-3.1.1-bin-hadoop3.2.tgz
mv spark-3.1.1-bin-hadoop3.2 /opt/module/spark-3.1.1
2、profile 配置
vim /etc/profile
#SPAEK
export SPARK_HOME=/opt/module/spark-3.1.1
export PATH=$PATH:$SPARK_HOME/bin
# 分发
scp -r /etc/profile slave1:/etc/profile
scp -r /etc/profile slave2:/etc/profile
source /etc/profile
3、workers 配置
cp $SPARK_HOME/conf/workers.template $SPARK_HOME/conf/workers
vim $SPARK_HOME/conf/workers
master
slave1
slave2
4、spark-env 配置
cp $SPARK_HOME/conf/spark-env.sh.template $SPARK_HOME/conf/spark-env.sh
vim $SPARK_HOME/conf/spark-env.sh
# 添加以下内容
export JAVA_HOME=/opt/module/jdk1.8.0_212
SPARK_MASTER_HOST=master
SPARK_MASTER_PORT=7077
5、分发
scp -r /opt/module/spark-3.1.1 slave1:/opt/module/spark-3.1.1
scp -r /opt/module/spark-3.1.1 slave2:/opt/module/spark-3.1.1
6、启动
# 启动
$SPARK_HOME/sbin/start-all.sh
# 关闭
$SPARK_HOME/sbin/stop-all.sh
# 访问地址
http://192.168.25.100:8080/
7、提交应用测试
$SPARK_HOME/bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://master:7077 \
$SPARK_HOME/examples/jars/spark-examples_2.12-3.1.1.jar \
10
8、配置历史服务器
# 添加历史服务器配置
cp $SPARK_HOME/conf/spark-defaults.conf.template $SPARK_HOME/conf/spark-defaults.conf
vim $SPARK_HOME/conf/spark-defaults.conf
spark.eventLog.enabled true
spark.eventLog.dir hdfs://master:8020/directory
# 添加日志配置
vim $SPARK_HOME/conf/spark-env.sh
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://master:8020/directory
-Dspark.history.retainedApplications=30"
# 分发
scp $SPARK_HOME/conf/spark-env.sh slave1:$SPARK_HOME/conf/spark-env.sh
scp $SPARK_HOME/conf/spark-env.sh slave2:$SPARK_HOME/conf/spark-env.sh
scp $SPARK_HOME/conf/spark-defaults.conf slave2:$SPARK_HOME/conf/spark-defaults.conf
scp $SPARK_HOME/conf/spark-defaults.conf slave2:$SPARK_HOME/conf/spark-defaults.conf
# 在HDFS创建一个历史服务器路径
hadoop fs -mkdir /directory
9、启动历史服务器
第一次配置需要先重启spark
启动
$SPARK_HOME/sbin/start-history-server.sh
关闭
$SPARK_HOME/sbin/stop-history-server.sh
访问地址
http://192.168.25.100:18080/
# 执行SparkPi测试任务
$SPARK_HOME/bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://master:7077 $SPARK_HOME/examples/jars/spark-examples_2.12-3.1.1.jar 10
8、高可用
需要zookeeper
8.1 高可用用途
高可用可以提供容灾服务,当集群的唯一一个Master宕机后,还能用备用的Master接管
8.2 修改8080端口为8989
vim $SPARK_HOME/conf/spark-env.sh
# 注释如下内容:
# SPARK_MASTER_HOST=master
# SPARK_MASTER_PORT=7077
# 添加如下内容:
SPARK_MASTER_WEBUI_PORT=8989
export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=master,slave1,slave2
-Dspark.deploy.zookeeper.dir=/spark"
# 分发
scp $SPARK_HOME/conf/spark-env.sh slave1:$SPARK_HOME/conf/spark-env.sh
scp $SPARK_HOME/conf/spark-env.sh slave2:$SPARK_HOME/conf/spark-env.sh
# master停止spark集群
$SPARK_HOME/sbin/stop-all.sh
# 三台节点启动zookeeper
$ZK_HOME/bin/zkServer.sh start
# master启动spark集群
$SPARK_HOME/sbin/start-all.sh
8.3 单独启动 slave1 的master作为备用
$SPARK_HOME/sbin/start-master.sh
8.4 提交测试任务
$SPARK_HOME/bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://master:7077,slave1:7077 \
$SPARK_HOME/examples/jars/spark-examples_2.12-3.1.1.jar \
10