Spark源码阅读02-Spark核心原理之监控管理,膜拜大佬

}

}

Master UI监控页面

在Master UI监控页面上有四部分内容,界面截图如下:

在这里插入图片描述

其中:

  • ① Master概要信息: 内容包括集群Master的访问地址和 REST访问地址, 集群的可用 Worker节点数、 CPU核数、 内存总量、 正在运行/完成运行的应用数量和集群Master的状态等。

  • ② 集群的 Worker 列表:运行在集群中的 Worker 节点列表,显示内容包括 Worker 的编号、访问地址 (IP 地址和端口)、 节点状态、CPU 核数和内存大小等信息, 其中 CPU 核数和内存同时显示了总量和使用盘。

  • ③ 正在运行的应用程序: 显示正在运行在集群中的应用程序列表, 显示内容包括应用程序的编号、名称、使用的 CPU 核数、每个 Worker 节点平均使用内存大小、提交时间、 提交用户、 运行状态和运行耗时等信息。 通过单击应用程序的编号或名称能够看到该应用程序作业和调度阶段的运行情况。

  • ④ 完成运行的应用程序: 显示已经完成运行的应用程序, 已经运行状态包括成功和失败两种情况,显示内容和正在运行的应用程序的显示内容相同

SparkContext 启动时, 启动应用程序的 Ul 监控界面, 默认端口为 4040, 访问地址为 http://host:4040, 其启动代码在SparkContext 实现如下:

_ui =

//默认情况下启动应用程序的UI监控,用于监控作业处理状态

if (conf.getBoolean(“spark.ui.enabled”, true)) {

Some(SparkUI.create(Some(this), _statusStore, _conf, _env.securityManager, appName, “”,

startTime))

} else {

// For tests, do not enable the UI

None

}

// Bind the UI before starting the task scheduler to communicate

// the bound port to the cluster manager properly

//如果端口被占用会逐步递增直至可用,默认端口为4040

ui.foreach(.bind())

_hadoopConfiguration = SparkHadoopUtil.get.newConfiguration(_conf)

// Add each JAR given through the constructor

if (jars != null) {

jars.foreach(addJar)

}

if (files != null) {

files.foreach(addFile)

}

应用程序 UI 监控

应用程序 UI 监控一般包括作业、调度阶段、 存储、 运行环境、Executor和SQL等信息,在SparkStreaming中会增加Streaming监控信息。其还有事件时间轴、执行DAG和SparkStreaming统计3个视图,使得监控更为直观, 可视化视图更加具体。

(1)作业监控页面

在该监控页面中显示了作业的运行情况, 内容包括作业的概要信息、 事件时间轴视图、正运行的作业和已成功运行的作业等信息。

在这里插入图片描述

点击 Completed Jobs的Description下面的内容,可以看该job的运行细节,包括其执行的DAG图。

在这里插入图片描述

(2)调度阶段监控页面

在该监控页面中显示了应用程序调度阶段的运行情况, 内容包括调度阶段概要信息、 正在运行的调度阶段、 已成功运行的调度阶段和运行失败的调度阶段等4个部分。 在调度阶段概要 信息中, 显示了该应用程序运行耗时、采用的调度模式, 以及正在运行/已成功运行/运行失败的调度阶段的数量。

在这里插入图片描述

点击Description下面的内容,可以具体看到某个调度阶段的详细内容。在页面中显示了该调度阶段中任务运行的总体信息、 Executor运行信息和任务的详细运行情况。

在这里插入图片描述

(3)存储监控页面

Spark 中如果 RDD 进行了缓存, 则该情况可以通过存储监控页面进行查看, 监控的内容包括缓存 RDD 名称、存储级别、缓存 Partition 数、 缓存百分比、缓存内存数据大小、缓存 Alluxio 数据大小和存入磁盘数据大小。

在这里插入图片描述

(4) 运行环境监控页面

在该页面中显示了 Spark 的运行环境, 内容包括运行时信息、 系统参数和 Spark 参数等信息。 通过该页面可以确认运行环境以及 Spark 设置的参数是否正确。

在这里插入图片描述

(5) Executor 监控页面

在该页面中先显示了 Spark 集群中运行的 Driver 和 Executor 列表,记录了 Driver 和 Executor基本信息, 如编号、 地址信息和 RDD 数据块个数; 另一方面也记录了在应用程序运行期间的参数, 如内存使用情况、 磁盘使用情况和正在运行/成功完成/失败任务数、 输入数据量、 Shuffle读数据量和 Shuffle 写数据量。

在这里插入图片描述

历史UI监控

默认情况下Spark没有打开历史UI监控功能,当Spark集群重启时,之前运行的应用程序状态信息不能够访问。此时需要打开Spark历史Ul监控配置,配置过程可参考博客

在这里插入图片描述

Metrics


Spark内置了一个可配置的度量系统(Metrics),它是基于Coda Hale的 Metrics库构建的,能够将Spark 内部状态通过HTTP、JMX、CSV等形式呈现给用户。同时,用户也可以以插件的方式将自己实现的数据源(Metrics Source)和数据输出方式(Metrics Sink)添加到Metrics 系统中,从而获取自己需要的据。

在Metrics系统中有两个重要的概念: Metrics Soure 和 Metrics Sink 通过这两个概念定义了Metrics系统的输入和输出。其中:

  • Metrics Source:定义了所需要采集的各种 Metrics,以及如何采集这些 Metrics。这些定义好的Metrics会注册到Metrics系统内部以备使用。

  • Metrics Slink:定义了Metrics的输出行为,采集到的数据以何种方式呈现给用户

下图显示了Metrics系统各模块之间的关系,Metrics Source和 Metrics Slink 以插件的形式被Metrics系统所管理,通过MetricsConfig 配置属性启动相应的插件。

在这里插入图片描述

Metrics系统配置文件为$Spark/conff metrics.properties, 配置项格式如下, 不符合规则配置项系统将忽略。

[instance].sink I source. [name]. [options]=value

  • instance:表示 Spark 内部监控的不同对象,在Spark定义了Master、 Worker、Executor、 Driver和Applications种对象 。用户可以使用通配符*表示所有对象 ,不过配置项有更详细的描述, 则通配符设置值将被覆盖, 如下配置中: *sink.console. period和 *.sink.console. unit 将被master.sink.console. period和master.sink.console. unit所覆盖。

*.sink.console.period = 1O

*.sink.console.unit = seconds

master.sink.console.period = 15

maser.sink.console.unit = seconds

  • sink I source: 设置采集数据输出方式和采集数据源。

  • name: 该名称由用户定义, 表示sink或 source名称。 在如下配置项中, 配置了获取的度量数据以CSV的形式输出。

*.sink.csv.class = org.apache.spark.metrics.sink.CsvSink

*.sink.csv.period = 1

*.sink.csv.unit = minutes

*.sink.csv.directory = /tmp/

  • option:定义了配置项的名称和对应值,在下面的配置项中,配置不同对象数据源名称和对应值。

master.source.jvm.class = org.apache.spark.metrics.source.JvmSource

worker.source.jvm.class = org.apache.spark.me七rics.source.JvmSource

driver.source.jvm.class = org.apache.spark.metrics.source.JvmSource

executor.source.jvm.class = org.apache.spark.metrics.source.JvmSource

输入源(Metrics Source)介绍

在Spark中内置了6种Metrics Source,这些数据源在Master启动或应用程序启动时会随之启动, 具体如下:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

写在最后

可能有人会问我为什么愿意去花时间帮助大家实现求职梦想,因为我一直坚信时间是可以复制的。我牺牲了自己的大概十个小时写了这片文章,换来的是成千上万的求职者节约几天甚至几周时间浪费在无用的资源上。

复习一周,字节跳动三场技术面+HR面,不小心拿了offer

复习一周,字节跳动三场技术面+HR面,不小心拿了offer

上面的这些(算法与数据结构)+(Java多线程学习手册)+(计算机网络顶级教程)等学习资源
024b (备注Java)**
[外链图片转存中…(img-95wqCNkS-1711719958689)]

写在最后

可能有人会问我为什么愿意去花时间帮助大家实现求职梦想,因为我一直坚信时间是可以复制的。我牺牲了自己的大概十个小时写了这片文章,换来的是成千上万的求职者节约几天甚至几周时间浪费在无用的资源上。

[外链图片转存中…(img-UDUR4QP7-1711719958689)]

[外链图片转存中…(img-HLZ9u2VT-1711719958690)]

上面的这些(算法与数据结构)+(Java多线程学习手册)+(计算机网络顶级教程)等学习资源

  • 9
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值