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状态提升为活动状态。

原文地址:https://www.cnblogs.com/yxym2016/p/14145568.html