下面介绍的是spark的几种运行的模式:本地模式, 分布式(standalone)和 yarn模式
,还有配置高可用
和配置历史服务
本地模式
将解压后的文件直接执行下面命令,
bin/spark-shell
提交应用:
1 bin/spark-submit
1 --class org.apache.spark.examples.SparkPi
1 --master local[2] `
1 ./examples/jars/spark-examples_2.12-3.0.0.jar
1 10
参数说明:
- –class 表示要执行程序的主类,此处可以更换为咱们自己写的应用程序
- –master local[2] 部署模式,默认为本地模式,数字表示分配的虚拟 CPU 核数量
- spark-examples_2.12-3.0.0.jar 运行的应用类所在的 jar 包,实际使用时,可以设定为咱们自己打的 jar 包
- 数字 10 表示程序的入口参数,用于设定当前应用的任务数量
Standalone(分布式集群)模式
先启动zookeeper集群;
1.修改slaves文件(集群地址):
hadoop202
hadoop203
hadoop204
2.修改spark-env.sh 文件,添加 JAVA_HOME 和集群对应的 master 节点
export JAVA_HOME=/opt/module/jdk1.8.0_144
SPARK_MASTER_HOST=hadoop202
SPARK_MASTER_PORT=7077
3.== 注意: 7077是内部通信端口==
分发到集群:
xsync spark-standalone
启动:
sbin/start-all.sh
提交应用:
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop202:7077 \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
1 --class 表示要执行程序的主类
2 --master spark://linux1:7077 独立部署模式,连接到 Spark 集群
3 spark-examples_2.12-3.0.0.jar 运行类所在的 jar 包
4 数字 10 表示程序的入口参数,用于设定当前应用的任务数量
提交参数说明:
Yarn模式
1.修改yarn-site.xml文件(防止yarn资源调度出现问题)
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认
是 true -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认
是 true -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
并进行分发
2.修改spark里的spark-env.conf文件,添加
export JAVA_HOME=/opt/module/jdk1.8.0_144
YARN_CONF_DIR=/opt/module/hadoop-3.1.3/etc/hadoop
提交应用:
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
前提是要先启动hdfs和yarn
然后就可以启动了
三种模式的对比图:
配置历史服务
1.修改 spark-default.conf:
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop202:8020/directory
注: directory文件是日志存放的位置,这个文件必须要提前创建好
2.再修改spark-env.conf文件
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://hadoop202:8020/directory
-Dspark.history.retainedApplications=30"
⚫ 参数 1 含义:WEB UI 访问的端口号为 18080
⚫ 参数 2 含义:指定历史服务器日志存储路径
⚫ 参数 3 含义:指定保存 Application 历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数。
3.注意: 如果是yarn
模式,还要修改spark-default.conf文件,进行关联
spark.yarn.historyServer.address=hadoop202:18080
spark.history.ui.port=18080
分发配置文件和重启集群和历史服务:
sbin/start-all.sh
sbin/start-history-server.sh
配置高可用
只有一个master的话,会有单点故障问题,就需要配置高可用.
1.修改配置spark-env.sh:
注释如下内容:
#SPARK_MASTER_HOST=linux1
#SPARK_MASTER_PORT=7077
添加如下内容:
#####################
#Master 监控页面默认访问端口为 8080,但是可能会和 Zookeeper 冲突,所以改成 8989,也可以自定义,访问 UI 监控页面时请注意SPARK_MASTER_WEBUI_PORT=8989’
#####################
#配置zookeeper相关信息
export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=hadoop202,hadoop203,hadoop204
-Dspark.deploy.zookeeper.dir=/spark"
2.是依赖于zookeeper集群的,先启动zookeeper
3.然后进行启动spark集群,再在所要配置的高可用备用集群上启动master
sbin/start-all.sh
sbin/start-master.sh
提交应用到高可用集群
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop202:7077,hadoop203:7077 \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10