Spark History Server和Event Log详解

本文详述Spark History Server(SHS)的工作原理,包括Spark如何持久化事件、SHS启动参数、工作流程及DiskCache。SHS在应用运行期间通过EventLoggingListener将事件持久化到event log,然后在SHS启动时读取这些日志,通过LevelDB存储,提供高效的Spark应用历史查询。此外,文章还介绍了SHS如何更新和读取event log。
摘要由CSDN通过智能技术生成

前言
Spark如何持久化event
SHS启动参数
SHS工作流程
DiskCache
读取eventlog
参考

前言

这篇文章会overall的介绍一下Spark History Server和event log是如何一起工作的。Spark History Server(以下简称SHS)是一个用来debug 你的Spark applications的非常有用的工具,我相信熟悉Spark的对它都并不陌生。SHS是根据通过持久化application的运行过程中的所有events,通常是将定义的event写到一个HDFS的文件,这个文件就叫做event log。注意这个log和运行时产生的stdout/stderr不是一个概念的log。

Spark如何持久化event

SHS并不是负责做event的持久化的,而是你的application在running的时候完成了event持久化。当你提交Spark job的时候,必须通过配置来启动event log并且指定你的log path是SHS读取的event log的path,这样你的job才会被SHS找到。

spark.eventLog.enabled true 
spark.eventLog.dir hdfs://namenode/shared/spark-logs

那么Spark会记录哪些event呢?我们先来看下SparkListenerEvent, 这是所有event的基类(当然Spark streaming的event没有直接继承SparkListenerEvent)。所有继承了这个类,并且没有把logEvent设置为false的event,都会被EventLoggingListener的logEvent函数以Json的形式写到了event log中,一行为一个event。

@DeveloperApi
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "Event")
trait SparkListenerEvent {
   
  /* Whether output this event to the event log */
  protected[spark] def logEvent: Boolean = true
}

举个例子,在EventLoggingListener中,当收到SparkListenerStageSubmitted事件时,会执行onStageSubmitted函数,该函数调用了logEvent,将SparkListenerStageSubmitted转为Json并写入到event log中。

/** Log the event as JSON. */
  private def logEven
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值