Spark--Standalone部署模式
Standalone部署模式
独立部署模式,自身除了计算,也负责资源的调度。
集群规划
hadoop101 | hadoop102 | hadoop103 | |
---|---|---|---|
Spark | Worker(Master) | Worker | Worker |
安装文件
spark-3.0.1-bin-hadoop2.7.tgz
将其解压缩
tar -zxvf spark-3.0.1-bin-hadoop2.7.tgz -C /opt/module
修改配置文件
(1)进入到解压缩之后对应文件的conf文件夹下,修改salves.template文件名为slaves
mv salves.template salves
(2)修改slaves文件,添加worker节点
hadoop101
hadoop102
hadoop103
(3)修改spark-env.sh.template文件名为spark-env.sh
mv spark-env.sh.template spark-env.sh
(4)修改spark-env.sh文件,添加Java的环境变量,设置集群的Master节点
export JAVA_HOME=/opt/module/jdk1.8.0_144
SPARK_MASTER_HOST=hadoop101
SPARK_MASTER_PORT=7077
7077端口是spark集群内部通信的端口
(5)分发当前spark的安装目录
xsync spark
启动集群
(1)在spark的安装目录下执行启动脚本命令:
sbin/start-all.sh
(2)查看三台服务器的进程信息
xcall jps
(3)查看Master资源监控的Web界面
http://hadoop101:8080
提交测试应用
spark自带了用于测试的样例应用,已经打包成了Jar包,现在拿来测试
bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://hadoop101:7077 ./examples/jars/spark-examples_2.12-3.0.1.jar 10
参数说明:
--class 表示要执行程序的主类
--master spark://hadoop101:7077 独立部署模式,连接到Spark集群,地址为master地址
spark-examples_2.12-3.0.1.jar 运行类所在的jar包
数字10 表示程序的入口参数,用于设定当前应用的任务数量
配置历史服务
配置历史服务是为了能够记录任务的运行情况,以便于查看。
(1)修改spark-defaults.conf.template文件名为spark-defaults.conf
mv spark-defaults.conf.template spark-defaults.conf
(2)修改spark-defaults.conf文件,添加日志存储路径信息
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop101:9000/directory
注意:需要启动hadoop集群,HDFS上的directory目录需要提前存在
sbin/start-dfs.sh
hadoop fs -mkdir /directory
(3)修改spark-env.sh文件,添加日志配置
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://hadoop101:9000/directory
-Dspark.history.retainedApplications=30"
参数含义:
- 参数1 :历史服务器页面,端口号为18080
- 参数2:指定历史服务器日志存储路径
- 参数3:指定保存application历史记录的个数,如果超过这个值,旧的应用程序将被删除,这个是内存中的应用数量,不是页面上显示的应用数。
(4)分发配置文件
xsync conf
(5)重新启动spark集群和历史服务器
sbin/start-all.sh
sbin/start-history-server.sh
(6)重新执行测试应用的任务
bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://hadoop101:7077 ./examples/jars/spark-examples_2.12-3.0.1.jar 10
(7)历史服务器的查看地址:http://hadoop101:18080
配置高可用
配置高可用是因为当前集群中的Master节点只有一个,所以会存在单点故障问题。所以为了解决单点故障问题,需要在集群中配置多个Master节点,一旦处于活动状态的Master发生故障时,由备用Master提供服务,保证作业可以继续执行。这里的高可用一般采用Zookeeper设置。
集群规划
hadoop101 | hadoop102 | hadoop103 | |
---|---|---|---|
Spark | Zookeeper、Master、Worker | Zookeeper、Master、Worker | Zookeeper、Worker |
(1)启动zookeeper集群
zk.sh start
(2)修改spark-env.sh文件,添加如下配置
注释如下内容:
#SPARK_MASTER_HOST=hadoop101
#SPARK_MASTER_PORT=7077
添加如下内容:
#Master监控页面默认访问端口为8080,但是可能会和Zookeeper 冲突,所以改成8989,也可以自定义,访问UI监控页面时请注意
SPARK_MASTER_WEBUI_PORT=8989
export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=hadoop101,hadoop102,hadoop103
-Dspark.deploy.zookeeper.dir=/spark"
(3)分发配置文件
xsync conf/
(4)启动集群
sbin/start-all.sh
(5)启动hadoop102的单独Master节点,此时hadoop102节点Master状态处于备用状态
sbin/start-master.sh
(6)提交测试应用到高可用集群
bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://hadoop101:7077,hadoop102:7077 ./examples/jars/spark-examples_2.12-3.0.1.jar 10
(7)可将hadoop101的master进程杀掉
kill -9 进程号
(8)进入地址:hadoop102:8989的页面,过一会儿会发现,hadoop102节点的master状态提升为活动状态。