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 JobServer 是一个开源项目,用于管理和运行 Spark 作业,为开发者提供了 RESTful API 来交互式地提交和管理 Spark 作业。在这个“spark-job-server Build程序包”中,我们看到的是通过 sbt(Scala Build Tool...
在大数据处理领域,Spark JobServer和Retrofit2是两个重要的技术组件。Spark JobServer是一个用于在Apache Spark之上运行用户自定义函数(UDF)或作业的独立服务,它提供了RESTful API来提交、管理和监控Spark作业。...
本设计源码提供了一个基于Scala的Spark Thrift Server。项目包含12731个文件,主要使用Scala、Java、Python、Shell、JavaScript、CSS、HTML、Ruby和C编程语言。文件类型包括3539个Scala源代码文件、1559个Q文件、...
**SparkSQL的分布式执行引擎——Spark ThriftServer详解** SparkSQL是Apache Spark项目的一个核心组件,它提供了对结构化数据的处理能力,使得用户可以使用SQL或者DataFrame/Dataset API进行数据查询和分析。Spark ...
spark-hive-thriftserver_2.11-2.1.spark-hive-thrift
支持mysql8.x,使用utf8mb4编码。
spark-hive_2.11-2.3.0...spark-hive-thriftserver_2.11-2.3.0.jar log4j-2.15.0.jar slf4j-api-1.7.7.jar slf4j-log4j12-1.7.25.jar curator-client-2.4.0.jar curator-framework-2.4.0.jar curator-recipes-2.4.0.jar
- **启动Spark History Server**:为了查看Spark作业的历史记录,需要启动Spark History Server。 - **提交应用**:使用`spark-submit`命令提交Spark应用程序,指定YARN为资源管理器。 5. **注意事项**: - **...
spark-jobserver提供了一个RESTful接口,用于提交和管理作业,jar和作业上下文。 此存储库包含完整的Spark作业服务器项目,包括单元测试和部署脚本。 它最初始于 ,但现在是主要的开发仓库。 其他有用的链接:,, ...
spark-jobserver安装文档
10. **Spark工具和生态**:熟悉如SparkSubmit、Spark UI、Spark History Server等工具,以及与其他大数据工具(如Hive、Kafka、HDFS等)的集成。 总的来说,Spark是一个功能强大的大数据处理框架,涵盖了多个领域的...
它支持Hive SQL语法和Hive Server,这使得从Hive到Spark-SQL的迁移变得更加平滑。 2. **性能提升**:在相同的硬件配置下,Spark引擎相比Hadoop MapReduce展现出显著的性能优势。这是因为Spark采用了内存计算模型,...
Spark-Job-Server-Client 背景 人们总是使用curl或HUE上传jar并在Spark Job Server中运行spark作业。 但是,Spark Job Server官员仅提供其余的api来上传作业jar和运行作业,没有为客户端lib提供任何语言实现。 现在...
- 如果需要使用 Spark History Server 和其他自定义配置,还需要编辑 `spark-defaults.conf` 文件。 #### 五、分发安装文件 **1. 拷贝 Scala 和 Spark 到其他节点** - 使用 `scp` 命令将 Scala 和 Spark 的安装...
Spark hadoop: hadoop是Apache软件基金会旗下的一个开源式计算平台为用户提供了系统底层细节透明的分布式基础架构 Hadoop是java编写的开源、可伸缩和容错的框架,并且可部署在廉价的计算机集群中 hadoop以分布式文件...
spark和hive结合依赖,如何使用请看我博客https://blog.csdn.net/z1987865446/article/details/109372818
- **Spark History Server**:可以保存已完成的 Spark 应用程序的详细历史记录,方便后续分析。 - **Spark Metrics**:提供了监控 Spark 应用程序性能的各种指标。 通过以上介绍可以看出,Spark 不仅是一个强大的...
标题"spark toolsssss"可能指的是Spark相关的工具或工件,可能包括Spark Shell(交互式命令行环境)、Spark Submit(提交应用程序的工具)、Spark History Server(用于查看已完成作业的历史记录)以及各种开发工具...
7. 调优工具:使用Spark UI和Spark History Server监控作业运行情况,分析瓶颈并进行优化。 8. 参数调优:根据具体场景调整Spark的各类参数,如`spark.executor.instances`、`spark.sql.shuffle.partitions`等。 ...