Spark history Server产生背景
以standalone运行模式为例,在运行Spark Application的时候,Spark会提供一个WEBUI列出应用程序的运行时信息;但该WEBUI随着Application的完成(成功/失败)而关闭,也就是说,Spark Application运行完(成功/失败)后,将无法查看Application的历史记录;
Spark history Server就是为了应对这种情况而产生的,通过配置可以在Application执行的过程中记录下了日志事件信息,那么在Application执行结束后,WEBUI就能重新渲染生成UI界面展现出该Application在执行过程中的运行时信息;
Spark运行在yarn或者mesos之上,通过spark的history server仍然可以重构出一个已经完成的Application的运行时参数信息(假如Application运行的事件日志信息已经记录下来);
配置&使用Spark History Server
以默认配置的方式启动spark history server:
cd $SPARK_HOME/sbin start-history-server.sh
报错:
starting org.apache.spark.deploy.history.HistoryServer, logging to /home/spark/software/source/compile/deploy_spark/sbin/../logs/spark-spark-org.apache.spark.deploy.history.HistoryServer-1-hadoop000.out failed to launch org.apache.spark.deploy.history.HistoryServer: at org.apache.spark.deploy.history.FsHistoryProvider.<init>(FsHistoryProvider.scala:44) ... 6 more
需要在启动时指定目录:
start-history-server.sh hdfs://hadoop000:8020/directory
hdfs://hadoop000:8020/directory可以配置在配置文件中,那么在启动history-server时就不需要指定,后续介绍怎么配置;
注:该目录需要事先在hdfs上创建好,否则history-server启动报错。
启动完成之后可以通过WEBUI访问,默认端口是18080:http://hadoop000:18080
默认界面列表信息是空的,下面截图是我跑了几次spark-sql测试后出现的。
history server相关的配置参数描述
1) spark.history.updateInterval
默认值:10
以秒为单位,更新日志相关信息的时间间隔
2)spark.history.retainedApplications
默认值:50
在内存中保存Application历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,当再次访问已被删除的应用信息时需要重新构建页面。
3)spark.history.ui.port
默认值:18080
HistoryServer的web端口
4)spark.history.kerberos.enabled
默认值:false
是否使用kerberos方式登录访问HistoryServer,对于持久层位于安全集群的HDFS上是有用的,如果设置为true,就要配置下面的两个属性
5)spark.history.kerberos.principal
默认值:用于HistoryServer的kerberos主体名称
6)spark.history.kerberos.keytab
用于HistoryServer的kerberos keytab文件位置
7)spark.history.ui.acls.enable
默认值:false
授权用户查看应用程序信息的时候是否检查acl。如果启用,只有应用程序所有者和spark.ui.view.acls指定的用户可以查看应用程序信息;否则,不做任何检查
8)spark.eventLog.enabled
默认值:false
是否记录Spark事件,用于应用程序在完成后重构webUI
9)spark.eventLog.dir
默认值:file:///tmp/spark-events
保存日志相关信息的路径,可以是hdfs://开头的HDFS路径,也可以是file://开头的本地路径,都需要提前创建
10)spark.eventLog.compress
默认值:false
是否压缩记录Spark事件,前提spark.eventLog.enabled为true,默认使用的是snappy
以spark.history开头的需要配置在spark-env.sh中的SPARK_HISTORY_OPTS,以spark.eventLog开头的配置在spark-defaults.conf
我在测试过程中的配置如下:
spark-defaults.conf
spark.eventLog.enabled true spark.eventLog.dir hdfs://hadoop000:8020/directory spark.eventLog.compress true
spark-env.sh
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=7777 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://had oop000:8020/directory"
参数描述:
spark.history.ui.port=7777 调整WEBUI访问的端口号为7777
spark.history.fs.logDirectory=hdfs://hadoop000:8020/directory 配置了该属性后,在start-history-server.sh时就无需再显示的指定路径
spark.history.retainedApplications=3 指定保存Application历史记录的个数,如果超过这个值,旧的应用程序信息将被删除
调整参数后启动start-history-server.sh
start-history-server.sh
访问WEBUI: http://hadoop000:7777
在使用spark history server的过程中产生的几个疑问:
疑问1:spark.history.fs.logDirectory和spark.eventLog.dir指定目录有啥区别?
经测试后发现:
spark.eventLog.dir:Application在运行过程中所有的信息均记录在该属性指定的路径下;
spark.history.fs.logDirectory:Spark History Server页面只展示该指定路径下的信息;
比如:spark.eventLog.dir刚开始时指定的是hdfs://hadoop000:8020/directory,而后修改成hdfs://hadoop000:8020/directory2
那么spark.history.fs.logDirectory如果指定的是hdfs://hadoop000:8020/directory,就只能显示出该目录下的所有Application运行的日志信息;反之亦然。
疑问2:spark.history.retainedApplications=3 貌似没生效??????
The History Server will list all applications. It will just retain a max number of them in memory. That option does not control how many applications are show, it controls how much memory the HS will need.
注意:该参数并不是也页面中显示的application的记录数,而是存放在内存中的个数,内存中的信息在访问页面时直接读取渲染既可;
比如说该参数配置了10个,那么内存中就最多只能存放10个applicaiton的日志信息,当第11个加入时,第一个就会被踢除,当再次访问第1个application的页面信息时就需要重新读取指定路径上的日志信息来渲染展示页面。
详见官方文档:http://spark.apache.org/docs/latest/monitoring.html
相关推荐
Spark on Yarn 模式部署是一种常见的 Spark 应用场景,本文将详细介绍 Spark on Yarn 模式部署的步骤和配置过程。 标题解释 Spark on Yarn 模式部署是指将 Spark 应用程序部署在 Yarn 集群上,使得 Spark 能够使用 ...
Spark on Yarn是一种将Spark应用程序部署在Hadoop YARN资源管理器上的方法,它允许Spark充分利用YARN的资源管理和调度功能。在这个实验中,我们将详细探讨如何在Yarn模式下安装和部署Spark集群。 首先,我们需要...
此时,Yarn(Yet Another Resource Negotiator)出现了,它是Hadoop 2.0中引入的新资源管理框架,进一步优化了资源管理和任务调度,而Spark on Yarn模式则充分利用了Yarn的资源调度能力和Spark内存计算的优势,显著...
**Spark on Yarn** 是指Apache Spark集群管理器与Apache Hadoop YARN资源管理器之间的集成模式。这种模式下,YARN作为资源调度器负责分配资源,而Spark则负责任务的具体执行。这种方式使得Spark能够更好地利用Hadoop...
在大数据处理领域,Hadoop MapReduce 和 Apache Spark 是两种重要的计算框架,它们都在YARN(Yet Another Resource Negotiator)上运行以实现资源管理和任务调度。本文将深入探讨这两个框架以及YARN的相关概念。 ...
Spark on YARN 集群搭建详细过程 _title_:Spark on YARN 集群搭建详细过程 _description_:本文详细介绍了 Spark on YARN 集群搭建的过程,包括配置主机 hosts 文件、免密码登录、安装 Java、安装 Scala 等步骤。...
Spark On Yarn 是一个在 Apache Hadoop YARN(Yet Another Resource Negotiator)资源管理器上运行 Apache Spark 应用程序的框架。这种模式允许 Spark 利用 Hadoop 的集群资源管理和调度能力,使得 Spark 能够更好地...
Spark 初始化源码阅读 Spark on YARN 的 Client 和 Cluster 区别 Spark 是一个大数据处理的开源框架,它可以在多种集群管理器上运行,如 YARN、Mesos 和 Standalone。Spark on YARN 是 Spark 在 YARN 集群管理器上...
Spark on Yan集群搭建的详细过程,减少集群搭建的时间
基于docker搭建spark on yarn及可视化桌面.doc
- 在Master节点上启动Spark的History Server,以便查看任务历史。 - 在集群中任意节点提交一个Spark应用,如`spark-submit --master yarn --class org.apache.spark.examples.SparkPi --deploy-mode cluster spark...
【Spark on Yarn之Executor内存管理】 Spark是一个分布式计算框架,它可以在多个集群管理系统上运行,包括YARN(Hadoop的资源调度器)。Executor是Spark执行任务的基本单元,每个Executor在一个工作节点上运行,...
Spark的Yarn模式是将Spark应用部署在Hadoop的YARN资源管理系统上的方式,这种方式无需单独搭建Spark集群,而是利用YARN的资源管理和调度能力。YARN(Yet Another Resource Negotiator)是Hadoop 2.x版本引入的一个...
SPARK2_ON_YARN-2.4.0 jar包下载
基于SparkonYarn的淘宝数据挖掘平台
### 基于Spark_on_Yarn的淘宝数据挖掘平台 #### 一、为什么选择Spark_on_Yarn 在大数据处理领域,随着数据量的急剧增长和技术的发展,传统的数据处理框架如Hadoop MapReduce面临着一系列挑战。淘宝作为中国最大的...
本来不打算写的了,但是真的是闲来无事,整天看美剧也没啥意思。这一章打算讲一下Spark onyarn的实现,1.0.0里面...在第一章《spark-submit提交作业过程》的时候,我们讲过Sparkonyarn的在cluster模式下它的main clas
在提交Spark任务前,需要配置Spark的相关属性,如`spark.master`设置为`yarn-client`或`yarn-cluster`,前者用于客户端模式,后者用于集群模式。此外,还需指定Hadoop的配置目录,例如`spark.yarn.conf.archive`。 ...
三种方式的spark on kubernetes对比,第一种:spark原生支持Kubernetes资源调度;第二种:google集成的Kubernetes的spark插件sparkoperator;第三种:standalone方式运行spark集群
Spark on Yarn是指在Yarn集群中运行Spark应用程序。下面是Spark on Yarn的配置步骤: 1. 修改配置文件:修改spark-defaults.conf和spark-env.sh文件,配置Spark的参数。 2. 提交Spark任务:使用spark-submit命令...