主题网站策划设计书,最权威的做网站的公司哪家好,一个wordpress两个站点,济南网站1 Spark的部署方式介绍
Spark部署模式分为Local模式#xff08;本地模式#xff09;和集群模式#xff08;集群模式又分为Standalone模式、Yarn模式和Mesos模式#xff09;
1.1 Local模式
Local模式常用于本地开发程序与测试#xff0c;如在idea中
1.2 Standalone模…1 Spark的部署方式介绍
Spark部署模式分为Local模式本地模式和集群模式集群模式又分为Standalone模式、Yarn模式和Mesos模式
1.1 Local模式
Local模式常用于本地开发程序与测试如在idea中
1.2 Standalone模式
Standalone模式被称为集群单机模式。Spark与Hadoop1.0版本有点类似Spark本身自带了完整的资源调度管理服务但这不是它的强项因为Spark主要是一个计算框架可以独立部署到集群中无须依赖任何其他的资源管理系统在该模式下Spark集群架构为主从模式即一台Master节点与多台Slave节点Slave节点启动的进程名称为Worker此时集群会存在单点故障。单点故障可利用Spark HA 与zookeeper解决
这种模式下 Driver 和 Worker 是启动在节点上的进程运行在JVM 中的进程
Driver 与集群节点之间有频繁的通信。Driver 负责任务task的分发和结果的回收 即任务的调度。如果task的计算结果非常大就不要回收了。会造成OOMWorker 是 Standalone 资源调度框架里面资源管理的从节点也是JVM进程 管理每个节点中的资源状态启动进程执行Task任务 Master 是 Standalone 资源调度框架里面资源管理的主节点也是JVM进程 管理所有资源状态
简单来说
Master类似于 yarn的 RMDriver类似于 yarn的 AMApplicationMasterSlaves类似于 yarn的 NM
Worker、Master是常驻进程、Driver是当有任务来时才会启动
1.3 Yarn模式
Yarn模式被称为 Spark on Yarn 模式即把Spark作为一个客户端将作业提交给Yarn服务由于在生产环境中很多时候要与Hadoop使用同一个集群因此采用Yarn来管理资源调度可以有效提高资源利用率
Yarn模式又分为Yarn Cluster模式、Yarn Client模式
Yarn Cluster用于生产环境所以的资源调度和计算都在集群上运行Yarn Client用于交互、调试环境
若要基于 yarn 来进行资源调度必须实现 ApplicationMaster 接口Spark 实现了这个接口所以可以基于 Yarn 来进行资源调度
1.4 Mesos模式
Mesos模式被称为 Spark on Mesos 模式Mesos与Yarn同样是一款资源调度管理系统可以为Spark提供服务由于Spark与Mesos存在密切的关系因此在设计Spark框架时充分考虑到了对Mesos的集成但如果同时运行Hadoop和Spark从兼容性的角度来看Spark on Yarn是更好的选择。
1.5 小结
Spark作为一个数据处理框架和计算引擎被设计在所有常见的集群环境中运行, 在国内工作中主流的环境为Yarn不过逐渐容器式环境也慢慢流行起来。接下来我们就分别看看不同环境下Spark的运行
2 Spark环境部署
2.1 Local模式
Local模式就是不需要其他任何节点资源就可以在本地执行Spark代码的环境一般用于教学调试演示等
这种模式最为简单解压即用不需要进入任何配置
1将压缩包上传至Linux并解压到指定目录
[nhkkk01 opt]$ tar -zxvf spark-3.2.0-bin-hadoop3.2-scala2.13.tgz -C /opt/software/
[nhkkk01 opt]$ cd /opt/software/
[nhkkk01 software]$ mv spark-3.2.0-bin-hadoop3.2-scala2.13 spark-local2配置文件spark-env.sh
[nhkkk01 conf]$ pwd
/opt/software/spark-local/conf
[nhkkk01 conf]$ cp spark-env.sh.template spark-env.sh
[nhkkk01 conf]$ vim spark-env.sh
# 添加如下配置JAVA_HOME/opt/software/jdk1.8.0_152
SCALA_HOME/opt/software/scala-2.13.5HADOOP_CONF_DIR/opt/software/hadoop-3.1.3/etc/hadoop3启动spark shell
命令
spark-shell -master local | local[k]| local[*] # 建议 k 2其中k表示启动线程数目CPU Core核数
ValuelocalRuns Spark locally with one worker thread. There will be no multiple threads running in parallellocal[k]Runs Spark locally with k number of threads.( K is ideally the number of cores in your machine.)local[*]Runs Spark locally with a number of worker threads that equals the number of logical cores in your machine.
# 进入解压缩后的路径执行如下指令
[nhkkk01 software]$ cd spark-local/
[nhkkk01 spark-local]$ bin/spark-shell
Using Sparks default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to WARN.
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Welcome to____ __/ __/__ ___ _____/ /___\ \/ _ \/ _ / __/ _//___/ .__/\_,_/_/ /_/\_\ version 3.2.0/_/Using Scala version 2.13.5 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_152)
Type in expressions to have them evaluated.
Type :help for more information.
23/04/13 07:08:48 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Spark context Web UI available at http://kk01:4040
Spark context available as sc (master local[*], app id local-1681384129891).
Spark session available as spark.scala 3输入网址进入web ui监控页面访问
http://kk01:4040
注意
这里的kk01是在hosts文件配置了ip地址映射如果没有默认填写ip
4退出Local本地模式
两种方式
1、直接按ctrlc 或 ctrld
2、输入Scala指令
:quit5提交应用
[nhkkk01 spark-local]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master local[2] \
./examples/jars/spark-examples_2.13-3.2.0.jar \
10# --class 表示要执行的程序的主类可以可以根据我们自己编写的程序做出相应修改
# --master local[2] 部署模式默认为本地模式数字表示分配的虚拟cpu核数量
# spark-examples_2.13-3.2.0.jar 运行的应用类所在的jar包实际使用时可设定为我们自己打的jar报
# 数字10表示程序的入口参数用于设定当前应用的任务数量2.2 Standalone模式
真实工作中还是要将应用提交到对应的集群中去执行这里我们来看看只使用Spark自身节点运行的集群模式也就是我们所谓的独立部署Standalone模式。
Spark的 Standalone 模式体现了经典的master-slave模式
注意
搭建集群之前需要确认 jdk版本为8
0集群规划
kk01kk02kk03Worker MasterWorkerWorker
1将压缩包上传至Linux并解压到指定目录
[nhkkk01 opt]$ tar -zxvf spark-3.2.0-bin-hadoop3.2-scala2.13.tgz -C /opt/software/
[nhkkk01 opt]$ cd /opt/software/
[nhkkk01 software]$ mv spark-3.2.0-bin-hadoop3.2-scala2.13 spark-standalone2修改配置文件
进入spark-standalone/conf目录修改workers.template文件名为workes保守做法可以选择复制
[nhkkk01 software]$ cd spark-standalone/conf/
[nhkkk01 conf]$ cp workers.template workers修改workes文件添加worker节点
[nhkkk01 conf]$ vim workers
# 将文件内容替换为如下kk01
kk02
kk03修改spark-env.sh.template文件名为spark-env.sh 保守做法可以选择复制
[nhkkk01 conf]$ cd /opt/software/spark-standalone/conf/
[nhkkk01 conf]$ cp spark-env.sh.template spark-env.sh修改spark-env.sh文件添加JAVA_HOME环境变量和集群对应的master节点
[nhkkk01 conf]$ vim spark-env.sh
# 在文件末尾添加如下内容# 配置 jdk 环境
export JAVA_HOME/opt/software/jdk1.8.0_152
# 配置 Master 的 IP 端口
export SPARK_MASTER_HOSTkk01
export SPARK_MASTER_PORT7077# 注意7077端口相当于kk01内部通信的8020端口(此处的端口需要确认自己的Hadoop)3分发spark-standalone目录
# 使用scp或rsync分发scp或rsync区别在于 scp是完全拷贝 rsync只对差异文件进行拷贝# 由于是第一次配置standalone模式因此这里使用scp
[nhkkk01 software]$ scp -r /opt/software/spark-standalone/ kk02:/opt/software/spark-standalone/
[nhkkk01 software]$ scp -r /opt/software/spark-standalone/ kk03:/opt/software/spark-standalone/# 如果定义了分发脚本 xsync 则使用自定义脚本
[nhkkk01 software]$ xsync spark-standalone4启动集群
[nhkkk01 spark-standalone]$ sbin/start-all.sh 5查看服务器进程
[nhkkk01 spark-standalone]$ jps
2480 Master
2695 Jps
2586 Worker[nhkkk02 ~]$ jps
2497 Jps
2414 Worker[nhkkk03 ~]$ jps
2416 Worker
2499 Jps6查看Master资源监控Web UI界面
http://kk01:8080
注意
kk01这里默认是填写服务器ip但是我们在hosts文件里映射了ip因此填主机名也可以
7提交应用client模式
[rootkk01 spark-standalone]# bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://kk01:7077 \
./examples/jars/spark-examples_2.13-3.2.0.jar \
10# --class 表示要执行的程序的主类可以可以根据我们自己编写的程序做出相应修改
# --master spark://kk01:7077 独立部署模式连接到Spark集群
# spark-examples_2.13-3.2.0.jar 运行的应用类所在的jar包
# 数字10表示程序的入口参数用于设定当前应用的任务数量执行任务时会产生多个Java进程 CoarseGrainedExecutorBackend 执行节点进程 SparkSumbit 提交节点进程 [nhkkk01 ~]$ jps
2611 DataNode
3027 ResourceManager
3171 NodeManager
3687 Master
3783 Worker
2473 NameNode
3581 JobHistoryServer
4205 Jps
3998 SparkSubmit执行任务时默认采用服务器集群节点的总核数每个节点内存1024M。
任务执行流程
client 模式提交任务后会在客户端启动 Driver进程Driver 回向 Master 申请启动 Application 启动的资源资源申请成功Driver 端将 task 分发到worker 端执行启动 executor进程任务的分发Worker 端(executor进程) 将task 执行结果返回到 Driver 端任务结果的回收
提交参数说明
在提交应用中一般会同时一些提交参数
bin/spark-submit \
--class main-class
--master master-url \
... # other options
application-jar \
[application-arguments]参数解释可选值举例–classSpark程序中包含主函数的类–masterSpark程序运行的模式(环境)模式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都包含同样的jarapplication-arguments传给main()方法的参数
总结
**client模式适用于测试调试程序。**Driver进程是在客户端启动的这里的客户端指的是提交应用程序的当前节点。在Driver端可以看到 task执行的情况
**生成环境中不能使用client模式。**因为假设要提交100个application 到集群运行Driver每次都会在 client端启动那么就会导致客户端100网卡流量暴增的问题。
8提交应用cluster模式
[nhkkk01 spark-standalone]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://kk01:7077 \
--deploy-mode cluster \
./examples/jars/spark-examples_2.13-3.2.0.jar \
102.3 standalone配置历史服务器
由于spark-shell停止掉后集群监控kk01:4040页面就看不到历史任务的运行情况所以开发时都配置历史服务器记录任务运行情况。说白点就是Driver节点停止了
1修改spark-defaults.conf.template文件名为spark-defaults.conf
[nhkkk01 conf]$ cd /opt/software/spark-standalone/conf/
[nhkkk01 conf]$ cp spark-defaults.conf.template spark-defaults.conf2修改spark-default.conf文件配置日志存储路径
[nhkkk01 conf]$ vim spark-defaults.conf
# 在文件末尾加入如下内容spark.eventLog.enabled true
spark.eventLog.dir hdfs://kk01:8020/spark-history 注意
需要启动hadoop集群HDFS上的spark-history 目录需要提前存在。
3在创建HDFS上的spark-history 目录
[nhkkk01 conf]$ start-dfs.sh # Hadoop配置了环境变量脚本全局可用
[nhkkk01 conf]$ hadoop fs -mkdir /spark-history4修改spark-env.sh文件, 添加日志配置
[nhkkk01 conf]$ pwd
/opt/software/spark-standalone/conf
[nhkkk01 conf]$ vim spark-env.sh # 在文件中添加如下内容
export SPARK_HISTORY_OPTS
-Dspark.history.ui.port18080
-Dspark.history.fs.logDirectoryhdfs://kk01:8020/spark-history
-Dspark.history.retainedApplications30# 参数说明
# 参数1含义WEB UI访问的端口号为18080
# 参数2含义指定历史服务器日志存储路径
# 参数3含义指定保存Application历史记录的个数如果超过这个值旧的应用程序信息将被删除这个是内存中的应用数而不是页面上显示的应用数5分发配置文件
# 使用rsync命名更新差异文件 # 因为我们只更改了conf目录下的文件因此只分发conf目录即可
[nhkkk01 spark-standalone]$ rsync -av /opt/software/spark-standalone/conf/ kk02:/opt/software/spark-standalone/conf/[nhkkk01 spark-standalone]$ rsync -av /opt/software/spark-standalone/conf/ kk02:/opt/software/spark-standalone/conf/# 参数说明
# -a 归档拷贝
# -v 显示拷贝过程6重新启动集群和历史服务
# 先确保hdfs集群、spark集群关闭
[nhkkk01 spark-standalone]$ stop-dfs.sh
[nhkkk01 spark-standalone]$ sbin/stop-all.sh # 重启
[nhkkk01 spark-standalone]$ start-dfs.sh
[nhkkk01 spark-standalone]$ sbin/start-all.sh
[nhkkk01 spark-standalone]$ sbin/start-history-server.sh7查看进程
[nhkkk01 spark-standalone]$ jps
5921 Master
6052 Worker
5558 DataNode
5371 NameNode
6235 Jps
6174 HistoryServer8重新执行任务
[nhkkk01 spark-standalone]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://kk01:7077 \
./examples/jars/spark-examples_2.13-3.2.0.jar \
109查看历史服务
确保历史服务可用
http://kk01:18080/2.4 standalone配置高可用HA基于Zookeeper
当前集群中的Master节点只有一个所以会存在单点故障问题。所以为了解决单点故障问题需要在集群中配置多个Master节点一旦处于活动状态的Master发生故障时由备用Master提供服务保证作业可以继续执行。这里的高可用一般采用Zookeeper设置
集群规划
kk01 Worker ZooKeeper Masterkk02 Worker ZooKeeper Masterkk03 Worker ZooKeeper 1停止集群可选
在确保hdfs集群、spark集群停止的情况下才开始配置HA
[nhkkk01 spark-standalone]$ sbin/stop-all.sh
[nhkkk01 spark-standalone]$ stop-dfs.sh
2启动Zookeeper集群
[nhkkk01 spark-standalone]$ zkServer.sh start
[nhkkk02 ~]$ zkServer.sh start
[nhkkk03 ~]$ zkServer.sh start# 也可以使用自定义脚本启动集群如果你定义了的话
[nhkkk01 spark-standalone]$ xzk.sh start3修改spark-env.sh文件添加如下配置
[nhkkk01 conf]$ pwd
/opt/software/spark-standalone/conf
[nhkkk01 conf]$ vim spark-env.sh注释如下内容
#SPARK_MASTER_HOSTkk01
#SPARK_MASTER_PORT7077添加如下内容:
#Master监控页面默认访问端口为8080但是可能会和Zookeeper冲突所以改成8989也可以自定义访问UI监控页面时请注意
SPARK_MASTER_WEBUI_PORT8989export SPARK_DAEMON_JAVA_OPTS
-Dspark.deploy.recoveryModeZOOKEEPER
-Dspark.deploy.zookeeper.urlkk01,kk02,kk03
-Dspark.deploy.zookeeper.dir/spark参考配置文件如下
export JAVA_HOME/opt/software/jdk1.8.0_152
#SPARK_MASTER_HOSTkk01
#SPARK_MASTER_PORT7077export SPARK_HISTORY_OPTS
-Dspark.history.ui.port18080
-Dspark.history.fs.logDirectoryhdfs://kk01:8020/spark-history
-Dspark.history.retainedApplications30#Master监控页面默认访问端口为8080但是可能会和Zookeeper冲突所以改成8989也可以自定义访问UI监控页面时请注意
SPARK_MASTER_WEBUI_PORT8989export SPARK_DAEMON_JAVA_OPTS
-Dspark.deploy.recoveryModeZOOKEEPER
-Dspark.deploy.zookeeper.urlkk01,kk02,kk03
-Dspark.deploy.zookeeper.dir/spark
4分发配置文件
[nhkkk01 conf]$ rsync -av /opt/software/spark-standalone/conf/ kk02:/opt/software/spark-standalone/conf/[nhkkk01 conf]$ rsync -av /opt/software/spark-standalone/conf/ kk03:/opt/software/spark-standalone/conf/5启动集群
启动spark集群前先启动hdfs集群确定历史服务器正常当然也需要确保zookeeper集群正常启动
[nhkkk01 conf]$ start-dfs.sh # 启动hdfs集群[nhkkk01 spark-standalone]$ pwd
/opt/software/spark-standalone
[nhkkk01 spark-standalone]$ sbin/start-all.sh [nhkkk01 spark-standalone]$ sbin/start-history-server.sh # 启动历史服务进程6 启动kk02的单独Master节点此时kk02节点Master状态处于备用状态
[nhkkk02 ~]$ cd /opt/software/spark-standalone/
[nhkkk02 spark-standalone]$ sbin/start-master.sh 7查看进程
[nhkkk01 spark-standalone]$ jps
7697 NameNode
8385 Worker
8504 Jps
7289 QuorumPeerMain
8250 Master
7884 DataNode
6174 HistoryServer # 历史服务器进程[nhkkk02 spark-standalone]$ jps
4546 DataNode
4315 QuorumPeerMain
5003 Jps
4909 Master # 备份master
4798 Worker[nhkkk03 ~]$ jps
4688 SecondaryNameNode
4256 Worker
4347 Jps
3884 QuorumPeerMain
4111 DataNodes8提交应用到高可用集群
[nhkkk01 spark-standalone]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://kk01:7077,kk02:7077 \
./examples/jars/spark-examples_2.13-3.2.0.jar \
109查看kk01的Master 资源监控Web UI
http://kk01:8989/
发现状态为 Status: ALIVE
10手动停止kk01的Master资源监控进程
[nhkkk01 spark-standalone]$ jps
7697 NameNode
8385 Worker
7289 QuorumPeerMain
8250 Master
7884 DataNode
6174 HistoryServer
8910 Jps
[nhkkk01 spark-standalone]$ kill -9 825011) 查看kk02的Master 资源监控Web UI稍等一段时间后kk02节点的Master状态提升为活动状态
http://kk02:8989/
状态变化
Status:STANDBY Status: ALIVE
2.5 Yarn模式
独立部署Standalone模式由Spark自身提供计算资源无需其他框架提供资源。这种方式降低了和其他第三方资源框架的耦合性独立性非常强。但是你也要记住**Spark主要是计算框架而不是资源调度框架所以本身提供的资源调度并不是它的强项所以还是和其他专业的资源调度框架集成会更靠谱一些。**所以接下来我们来学习在强大的Yarn环境下Spark是如何工作的其实是因为在国内工作中Yarn使用的非常多。
注意
Spark on Yarn 不需要单独开启spark相关的进程
Spark On Yarn的本质
Master 角色由YARN的 ResourceManager 担任Worker 角色由YARN的 NodeManager 担任Driver 角色运行在YARN容器内 或 提交任务的客户端进程中真正干活的Executor运行在YARN提供的容器内
1上传并解压缩文件
将spark-3.2.0-bin-hadoop3.2-scala2.13.tgz文件上传到linux并解压缩放置在指定位置。
[nhkkk01 ~]$ cd /opt/software/
[nhkkk01 software]$ rz[nhkkk01 software]$ tar -zxvf spark-3.2.0-bin-hadoop3.2-scala2.13.tgz -C /opt/software/2重命名
[nhkkk01 software]$ mv spark-3.2.0-bin-hadoop3.2-scala2.13/ spark-yarn3修改配置文件yarn-site.xml
修改hadoop配置文件/opt/software/hadoop-3.1.3/etc/hadoop/yarn-site.xml
修改这个配置文件的原因是因为
[nhkkk01 hadoop]$ pwd
/opt/software/hadoop-3.1.3/etc/hadoop
[nhkkk01 hadoop]$ vim yarn-site.xml # 添加如下内容!-- 是否将对容器实施物理内存限制 生产中可产生改配置--
!--是否启动一个线程检查每个任务正使用的物理内存量如果任务超出分配值则直接将其杀掉默认是true --
propertynameyarn.nodemanager.pmem-check-enabled/namevaluetrue/value
/property!-- 是否将对容器实施虚拟内存限制 生产中可产生改配置--
propertynameyarn.nodemanager.vmem-check-enabled/namevaluefalse/value
/property!-- 开启日志聚集--
propertynameyarn.log-aggregation-enable/namevaluetrue/value
/property
!-- 设置yarn历史服务器地址--
propertynameyarn.log.server.url/namevaluehttp://kk01:19888/jobhistory/logs/value
/propertypropertynameyarn.nodemanager.remote-app-log-dir/namevalue/tmp/logs/value
/property
!-- 历史日志保存的时间 7天--
propertynameyarn.log-aggregation.retain-seconds/namevalue604800/value
/property4同步修改的文件至所有服务器
[nhkkk01 hadoop]$ rsync -av /opt/software/hadoop-3.1.3/etc/hadoop/ kk02:/opt/software/hadoop-3.1.3/etc/hadoop/[nhkkk01 hadoop]$ rsync -av /opt/software/hadoop-3.1.3/etc/hadoop/ kk03:/opt/software/hadoop-3.1.3/etc/hadoop/5 修改conf/spark-env.sh
当Spark Application连接到yarn集群上运行时需要设置环境变量HADOOP_CONF_DIR指向Hadoop配置目录以获取集群信息
在 $SPARK_HOME/conf/spark-env.sh 文件中
修改conf/spark-env.sh添加 JAVA_HOME和YARN_CONF_DIR配置
[nhkkk01 hadoop]$ cd /opt/software/spark-yarn/conf/
[nhkkk01 conf]$ cp spark-env.sh.template spark-env.sh
[nhkkk01 conf]$ vim spark-env.sh
# 添加如下内容export JAVA_HOME/opt/software/jdk1.8.0_152HADOOP_CONF_DIR/opt/software/hadoop-3.1.3/etc/hadoop
# 下面这个也可以不配因为和上面一样
YARN_CONF_DIR/opt/software/hadoop-3.1.3/etc/hadoop6启动HDFS集群、YARN集群
# 我们配置过Hadoop环境变量因此可以直接使用脚本一键启动
[nhkkk01 conf]$ start-dfs.sh
[nhkkk01 conf]$ start-yarn.sh 7提交应用cluster模式
[nhkkk01 spark-yarn]$ pwd
/opt/software/spark-yarn
[nhkkk01 spark-yarn]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
./examples/jars/spark-examples_2.13-3.2.0.jar \
10# 或者[nhkkk01 spark-yarn]$ pwd
/opt/software/spark-yarn
[nhkkk01 spark-yarn]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn-cluster \
./examples/jars/spark-examples_2.13-3.2.0.jar \
10查看http://kk01:8088页面查看历史页面查看任务调度情况点击History查看历史页面
yarn client 任务执行流程
客户端提交一个 Application在客户端会启动一个 Driver进程应用程序启动后会向 RM(ResourceMananger)相当于 standalone模式下的master进程发送请求启动AM(ApplicationMaster)RM收到请求随机选择一台 NM(NodeManager)启动AM。这里的NM相当于standalone中的Worker进程AM启动后会向 RM 请求一批 container资源用于启动ExecutorRM会找到一批 NM(包含container)返回给AM用于启动ExecutorAM 会向 NM发送命令启动 ExecutorExecutor启动后会方向注册给 DriverDriver发送 task 到 Executor 执行情况和结果返回给Driver端
总结
yarn-client模式同样是适用于测试因为Driver 运行在本地Driver会与yarn集群中的Executor 进行大量的通信提交的 application 过多同样会造成客户机网卡流量的大量增加
ApplicationMasterexecutorLauncher在次模式中的作用
为当前的 Application 申请资源给 NodeManager 发送消息启动 Executor
注意ApplicationMaster 在此模式下有 launchExecutor和申请资源的功能没有作业调度的功能
2.6 Yarn配置历史服务器
配置了 historyServer停止程序后可以在web ui 中 Completed Application 对应的 ApplicationID 中能查看history
1spark-defaults.conf
修改spark-defaults.conf.template 文件名为 spark-defaults.conf
[nhkkk01 spark-yarn]$ cd conf/
[nhkkk01 conf]$ pwd
/opt/software/spark-yarn/conf
[nhkkk01 conf]$ cp spark-defaults.conf.template spark-defaults.conf2修改spark-default.conf文件**配置日志存储路径**
[nhkkk01 conf]$ vim spark-defaults.conf
# 在文件末尾加入如下内容# 开启记录事件日志的功能
spark.eventLog.enabled true
# 设置事件日志存储的路径
spark.eventLog.dir hdfs://kk01:8020/spark-history
spark.history.fs.logDirectory hdfs://kk01:8020/spark-history # 日志优化选项压缩日志
spark.eventLog.compress true注意
需要启动hadoop集群HDFS上的spark-history 目录需要提前存在。
3在创建HDFS上的directory目录
[nhkkk01 conf]$ start-dfs.sh # Hadoop配置了环境变量脚本全局可用
[nhkkk01 conf]$ hadoop fs -mkdir /spark-history4修改spark-env.sh文件, 添加日志配置
[nhkkk01 conf]$ pwd
/opt/software/spark-yarn/conf
[nhkkk01 conf]$ vim spark-env.sh # 在文件中添加如下内容
export SPARK_HISTORY_OPTS
-Dspark.history.ui.port18080
-Dspark.history.fs.logDirectoryhdfs://kk01:8020/spark-history
-Dspark.history.retainedApplications30# 参数说明
# 参数1含义WEB UI访问的端口号为18080
# 参数2含义指定历史服务器日志存储路径
# 参数3含义指定保存Application历史记录的个数如果超过这个值旧的应用程序信息将被删除这个是内存中的应用数而不是页面上显示的应用数5修改spark-defaults.conf配置SparkHistoryServer
[nhkkk01 conf]$ vim spark-defaults.conf
# 添加如下配置spark.yarn.historyServer.addresskk01:18080
spark.history.ui.port180806启动历史服务器
[nhkkk01 conf]$ cd ..
[nhkkk01 spark-yarn]$ sbin/start-history-server.sh
starting org.apache.spark.deploy.history.HistoryServer, logging to /opt/software/spark-yarn/logs/spark-nhk-org.apache.spark.deploy.history.HistoryServer-1-kk
01.out[nhkkk01 spark-yarn]$ jps
2627 NameNode
2771 DataNode
3331 JobHistoryServer # 这个是Hadoop的历史服务器
4677 Jps
4605 HistoryServer # 这个是Spark的历史服务器
3134 NodeManager7重新提交应用(client模式)
[nhkkk01 spark-yarn]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
./examples/jars/spark-examples_2.13-3.2.0.jar \
108Web页面查看日志
http://kk01:18080/
配置依赖Spark jar包优化配置
当Spark Application应用提交运行在YARN上时默认情况下每次提交应用都需要将Spark相关jar包上传到YARN集群上为了节省提交时间和存储空间将Spark相关jar包上传到HDFS目录设置属性告知Spark Application应用
说明
该项配置属于优化配置可酌情考虑配置与否
上传Spark jar包前需要确保HDFS集群开启
# 在HDFS上创建目录用于存放jar包
[nhkkk01 ~]$ hadoop fs -mkdir sparkjars# 上传$SPARK_HOME/jars中所有的jar包
[nhkkk01 ~]$ hadoop fs -put /opt/software/spark-yarn/jars/* /sparkjars在$SPARK_HOME/conf/spark-defaults.conf文件增加spark 相关jar包存储在HDFS上的位置信息
[nhkkk01 ~]$ vim /opt/software/spark-yarn/conf/spark-defaults.conf
# 添加如下配置spark.yarn.jars hdfs://kk01:8020/sparkjars/*同步配置到所有节点
[nhkkk01 ~]$ sudo /home/nhk/bin/xsync /opt/software/spark-yarn/3 部署模式对比
模式Spark安装机器数需启动的进程所属者应用场景Local1无Spark测试Standalone3Master及WorkerSpark单独部署Yarn1Yarn及HDFSHadoop混合部署
4 常见端口号 Spark查看当前Spark-shell运行任务情况端口号4040计算 Spark Master内部通信服务端口号7077 Standalone模式下Spark Master Web端口号8080资源 Spark历史服务器端口号18080 Hadoop YARN任务运行情况查看端口号8088 文章转载自: http://www.morning.rszwc.cn.gov.cn.rszwc.cn http://www.morning.hwnqg.cn.gov.cn.hwnqg.cn http://www.morning.qsy37.cn.gov.cn.qsy37.cn http://www.morning.mrskk.cn.gov.cn.mrskk.cn http://www.morning.tfwg.cn.gov.cn.tfwg.cn http://www.morning.mqfw.cn.gov.cn.mqfw.cn http://www.morning.tsyny.cn.gov.cn.tsyny.cn http://www.morning.yxwrr.cn.gov.cn.yxwrr.cn http://www.morning.crsqs.cn.gov.cn.crsqs.cn http://www.morning.jsphr.cn.gov.cn.jsphr.cn http://www.morning.bzsqr.cn.gov.cn.bzsqr.cn http://www.morning.chfxz.cn.gov.cn.chfxz.cn http://www.morning.wpkr.cn.gov.cn.wpkr.cn http://www.morning.hjlsll.com.gov.cn.hjlsll.com http://www.morning.rlqqy.cn.gov.cn.rlqqy.cn http://www.morning.pynzj.cn.gov.cn.pynzj.cn http://www.morning.rxlk.cn.gov.cn.rxlk.cn http://www.morning.nssjy.cn.gov.cn.nssjy.cn http://www.morning.schwr.cn.gov.cn.schwr.cn http://www.morning.qphdp.cn.gov.cn.qphdp.cn http://www.morning.xhqwm.cn.gov.cn.xhqwm.cn http://www.morning.xcyhy.cn.gov.cn.xcyhy.cn http://www.morning.bmts.cn.gov.cn.bmts.cn http://www.morning.c7510.cn.gov.cn.c7510.cn http://www.morning.rpwck.cn.gov.cn.rpwck.cn http://www.morning.wmdqc.com.gov.cn.wmdqc.com http://www.morning.bnrff.cn.gov.cn.bnrff.cn http://www.morning.zrlwl.cn.gov.cn.zrlwl.cn http://www.morning.rfrx.cn.gov.cn.rfrx.cn http://www.morning.bfrsr.cn.gov.cn.bfrsr.cn http://www.morning.ltpzr.cn.gov.cn.ltpzr.cn http://www.morning.xwlhc.cn.gov.cn.xwlhc.cn http://www.morning.skbhl.cn.gov.cn.skbhl.cn http://www.morning.llcsd.cn.gov.cn.llcsd.cn http://www.morning.hsdhr.cn.gov.cn.hsdhr.cn http://www.morning.hlppp.cn.gov.cn.hlppp.cn http://www.morning.jbctp.cn.gov.cn.jbctp.cn http://www.morning.gpcy.cn.gov.cn.gpcy.cn http://www.morning.trffl.cn.gov.cn.trffl.cn http://www.morning.rfljb.cn.gov.cn.rfljb.cn http://www.morning.nynyj.cn.gov.cn.nynyj.cn http://www.morning.nnwmd.cn.gov.cn.nnwmd.cn http://www.morning.bpcf.cn.gov.cn.bpcf.cn http://www.morning.lzqnj.cn.gov.cn.lzqnj.cn http://www.morning.wrtsm.cn.gov.cn.wrtsm.cn http://www.morning.qttft.cn.gov.cn.qttft.cn http://www.morning.jghty.cn.gov.cn.jghty.cn http://www.morning.bpmdr.cn.gov.cn.bpmdr.cn http://www.morning.ypqwm.cn.gov.cn.ypqwm.cn http://www.morning.ryxdr.cn.gov.cn.ryxdr.cn http://www.morning.hwbmn.cn.gov.cn.hwbmn.cn http://www.morning.jmlgk.cn.gov.cn.jmlgk.cn http://www.morning.jhrqn.cn.gov.cn.jhrqn.cn http://www.morning.rmfh.cn.gov.cn.rmfh.cn http://www.morning.bpwz.cn.gov.cn.bpwz.cn http://www.morning.ctxt.cn.gov.cn.ctxt.cn http://www.morning.bqpg.cn.gov.cn.bqpg.cn http://www.morning.wlfxn.cn.gov.cn.wlfxn.cn http://www.morning.xfncq.cn.gov.cn.xfncq.cn http://www.morning.gzzxlp.com.gov.cn.gzzxlp.com http://www.morning.ykmkz.cn.gov.cn.ykmkz.cn http://www.morning.syglx.cn.gov.cn.syglx.cn http://www.morning.pwsnr.cn.gov.cn.pwsnr.cn http://www.morning.mpnff.cn.gov.cn.mpnff.cn http://www.morning.dmwck.cn.gov.cn.dmwck.cn http://www.morning.hhqjf.cn.gov.cn.hhqjf.cn http://www.morning.dbxss.cn.gov.cn.dbxss.cn http://www.morning.hwlk.cn.gov.cn.hwlk.cn http://www.morning.kwwkm.cn.gov.cn.kwwkm.cn http://www.morning.cklgf.cn.gov.cn.cklgf.cn http://www.morning.pqkrh.cn.gov.cn.pqkrh.cn http://www.morning.nlygm.cn.gov.cn.nlygm.cn http://www.morning.kdgcx.cn.gov.cn.kdgcx.cn http://www.morning.xwlmg.cn.gov.cn.xwlmg.cn http://www.morning.gqbtw.cn.gov.cn.gqbtw.cn http://www.morning.smyxl.cn.gov.cn.smyxl.cn http://www.morning.jwfqq.cn.gov.cn.jwfqq.cn http://www.morning.gwhjy.cn.gov.cn.gwhjy.cn http://www.morning.qmpbs.cn.gov.cn.qmpbs.cn http://www.morning.lcbt.cn.gov.cn.lcbt.cn