Spark 环境 Standalone 模式
文章目录
- Standalone 模式
- 集群规划
- 解压缩文件
- 修改配置文件
- 启动集群
- 提交参数说明
- 配置历史服务
- 配置高可用(HA)
Standalone 模式
local 本地模式毕竟只是用来进行练习演示的,真实工作中还是要将应用提交到对应的集群中去执行,这里我们来看看只使用 Spark 自身节点运行的集群模式,也就是我们所谓的独立部署(Standalone)模式。Spark 的 Standalone 模式体现了经典的 master-slave 模式。
集群规划
hadoop102 | hadoop103 | hadoop104 | |
---|---|---|---|
Spark | worker master | worker | worker |
解压缩文件
将 spark-3.0.0-bin-hadoop3.2.tgz 文件上传到 Linux 并解压缩在指定位置
[root@hadoop102 software]# tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module
[root@hadoop102 software]# cd /opt/module
[root@hadoop102 module]# mv spark-3.0.0-bin-hadoop3.2 spark-standalone
修改配置文件
1) 进入解压缩后路径的 conf 目录,修改 slaves.template 文件名为 slaves
[root@hadoop102 conf]# mv slaves.template slaves
2)修改 slaves 文件,添加 work 节点
hadoop102
hadoop103
hadoop104
3)修改 spark-env.sh.template 文件名为 spark-env.sh
[root@hadoop102 conf]# mv spark-env.sh.template spark-env.sh
4)修改 spark-env.sh 文件,添加 JAVA_HOME 环境变量和集群对应的 master 节点
export JAVA_HOME=/opt/module/jdk1.8.0_212/
SPARK_MASTER_HOST=hadoop102
SPARK_MASTER_PORT=7077
注意:7077 端口,相当于 hadoop3 内部通信的 8020 端口,此处的端口需要确认自己的 Hadoop配置
5)分发 spark-standalone 目录
xsync spark-standalone
启动集群
1) 执行脚本命令:
[root@hadoop102 spark-standalone]#
2)查看 Master 资源监控 Web UI 界面: http://hadoop102:8080
提交应用
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop102:7077 \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
1)–class 表示要执行程序的主类
2)–master spark://hadoop102:7077 独立部署模式,连接到 Spark 集群
3)spark-examples_2.12-3.0.0.jar 运行类所在的 jar 包
4)数字 10 表示程序的入口参数,用于设定当前应用的任务数量
执行任务时,会产生多个 Java 进程
执行任务时,默认采用服务器集群节点的总核数,每个节点内存 1024M。
提交参数说明
在提交应用中,一般会同时一些提交参数
bin/spark-submit \
--class <main-class>
--master <master-url> \
... # other options
<application-jar> \
[application-arguments]
参数 | 解释 | 可选值举例 |
---|---|---|
–class | Spark 程序中包含主函数的类 | |
–master | Spark 程序运行的模式(环境) | 模式:local[*]、spark://linux1:7077、Yarn |
–executor-memory 1G | 指定每个 executor 可用内存为 1G | 符合集群内存配置即可,具体情况具体分析。 |
–total-executor-cores 2 | 指定所有executor使用的cpu核数为 2 个 | 符合集群内存配置即可,具体情况具体分析。 |
–executor-cores | 指定每个executor使用的cpu核数 | 符合集群内存配置即可,具体情况具体分析。 |
application-jar | 打包好的应用 jar,包含依赖。这个 URL 在集群中全局可见。 比 如 hdfs:// 共享存储系统,如果是file:// path,那么所有的节点的path 都包含同样的 jar | 符合集群内存配置即可,具体情况具体分析。 |
application-arguments | 传给 main()方法的参数 | 符合集群内存配置即可,具体情况具体分析。 |
配置历史服务
由于 spark-shell 停止掉后,集群监控 hadoop102:4040 页面就看不到历史任务的运行情况,所以开发时都配置历史服务器记录任务运行情况。
1)修改 spark-defaults.conf.template 文件名为 spark-defaults.conf
[root@hadoop102 conf]# mv spark-defaults.conf.template spark-defaults.conf
2)修改 spark-default.conf 文件,配置日志存储路径
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop102:8020/directory
注意:需要启动 hadoop 集群,HDFS 上的 directory 目录需要提前存在。
[root@hadoop102 conf]# start-dfs.sh
[root@hadoop102 conf]# hadoop fs -mkdir /directory
3)修改 spark-env.sh 文件, 添加日志配置
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://hadoop102:8020/directory
-Dspark.history.retainedApplications=30"
1,参数 1 含义:WEB UI 访问的端口号为 18080
2,参数 2 含义:指定历史服务器日志存储路径
3,参数 3 含义:指定保存 Application 历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数。
4)分发配置文件
[root@hadoop102 spark-standalone]# xsync conf
5)重新启动集群和历史服务
[root@hadoop102 spark-standalone]# sbin/start-all.sh
[root@hadoop102 spark-standalone]# sbin/start-history-server.sh
6)重新执行任务
[root@hadoop102 spark-standalone]# bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop102:7077 \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
7) 查看历史服务:http://linux1:18080
配置高可用(HA)
所谓的高可用是因为当前集群中的 Master 节点只有一个,所以会存在单点故障问题。所以为了解决单点故障问题,需要在集群中配置多个 Master 节点,一旦处于活动状态的 Master发生故障时,由备用 Master 提供服务,保证作业可以继续执行。这里的高可用一般采用Zookeeper 设置
hadoop102 | hadoop103 | hadoop104 | |
---|---|---|---|
Spark | Master ,Zookeeper, Worker | Master ,Zookeeper, Worker | Master ,Zookeeper, Worker |
1)停止集群
[root@hadoop102 spark-standalone]# sbin/stop-all.sh
2) 启动 Zookeeper
[root@hadoop102 spark-standalone]# zk.sh start
3) 修改 spark-env.sh 文件添加如下配置
注释如下内容:
#SPARK_MASTER_HOST=hadoop102
#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=hadoop102,hadoop103,hadoop104
-Dspark.deploy.zookeeper.dir=/spark"
4) 分发配置文件
[root@hadoop102 spark-standalone]# xsync conf/
5) 启动集群
[root@hadoop102 spark-standalone]# sbin/start-all.sh
6)启动 hadoop103 的单独 Master 节点,此时 hadoop103 节点 Master 状态处于备用状态
[root@hadoop103 spark-standalone]# sbin/start-master.sh
7) 提交应用到高可用集群
[root@hadoop102 spark-standalone]# bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop102:7077,hadoop103:7077 \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
8)停止 hadoo102的 Master 资源监控进程
9) 查看 hadoop103 的 Master 资源监控 Web UI,稍等一段时间后,hadoop103 节点的 Master 状态 提升为活动状态
Spark 环境 Standalone 模式相关推荐
- Spark 部署 Standalone 模式
Spark 部署 Standalone 模式 解压缩文件 修改配置文件 启动集群 Web UI 界面 提交应用 提交参数说明 配置历史服务 配置日志存储路径 添加日志配置 重启动 Hadoop 集群 ...
- 008 Spark中standalone模式的HA(了解,知道怎么配置即可)
standalone也存在单节点问题,这里主要是配置两个master. 1.官网 2.具体的配置 3.配置方式一(不是太理想) 这种知识基于未来可以重启,但是不能在宕机的时候提供服务. 方式一:Sin ...
- Spark环境搭建Standalone模式
2.4 Standalone模式 在Standalon模式中,Spark集群由Master节点和Worker节点构成,使用内置的Standalon框架进行资源管理.Spark程序通过与Master节 ...
- Spark的安装(Standalone模式,高可用模式,基于Yarn模式)
目录 spark的Standalone模式安装 一.安装流程 1.将spark-2.2.0-bin-hadoop2.7.tgz 上传到 /usr/local/spark/ 下,然后解压 2.进入到c ...
- Spark运行模式Standalone 模式
Standalone 模式 Standalone 模式概述 standalone n. 脱机; adj. 单独的,独立的; local 本地模式毕竟只是用来进行练习演示的,真实工作中还是要将应用提交到 ...
- Spark集群环境搭建(standalone模式)
Spark集群环境搭建(standalone模式) 1. 实验室名称: 2. 实验项目名称: 3. 实验学时: 4. 实验原理: 5. 实验目的: 6. 实验内容: 7. 实验器材(设备.虚拟机名称) ...
- 【原】Spark Standalone模式
Spark Standalone模式 安装Spark Standalone集群 手动启动集群 集群创建脚本 提交应用到集群 创建Spark应用 资源调度及分配 监控与日志 与Hadoop共存 配置网络 ...
- 深入理解Spark 2.1 Core (六):Standalone模式运行的原理与源码分析
我们讲到了如何启动Master和Worker,还讲到了如何回收资源.但是,我们没有将AppClient是如何启动的,其实它们的启动也涉及到了资源是如何调度的.这篇博文,我们就来讲一下AppClient ...
- 深入理解Spark 2.1 Core (五):Standalone模式运行的原理与源码分析
概述 前几篇博文都在介绍Spark的调度,这篇博文我们从更加宏观的调度看Spark,讲讲Spark的部署模式.Spark部署模式分以下几种: local 模式 local-cluster 模式 Sta ...
最新文章
- 使用AD5933分析复阻抗的时钟频率设置
- PMCAFF | 产品经理的招聘要求调研分析
- android support design library eclipse,Eclipse下使用Android Design Support Library中的控件
- 美学设计评价_死亡的孩子无法使用的设计美学
- [Leetcode][第99题][JAVA][恢复二叉搜索树][中序遍历]
- php 两个二维数组对比,php比较两二维数组求大神指教
- Spring Boot 2.0---使用Swagger2构建强大的API文档
- c语言从入门到秃头表情包,c语言从入门到放弃表情包 - c语言从入门到放弃微信表情包 - c语言从入门到放弃QQ表情包 - 发表情 fabiaoqing.com...
- iOS后台唤醒实战:微信收款到账语音提醒技术总结
- paypal tp 对接_PayPal支付接入
- 第 11 章 基于小波技术进行图像融合--MATLAB人工智能深度学习模块
- 第39级台阶 小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!
- 微信公众号接入H5支付
- 如何在远程工作中保持企业文化的凝聚力
- 大小端交换的程序_数据库在小程序云开发中的应用
- 哈工大软件构造课程知识点总结(一)
- SitePoint新字体背后的故事:Roboto
- “node“不是内部或外部命令,也不是可运行的程序 或批处理文件
- miniui实现多附件上传
- 树莓派实现摄像头拍照