2023-10-31 10:20:15 8阅读
spark metrics 源码分析
1) 主要核心类是 MetricsSystem
MetricsSystem 有三个主要成员:sources 、 sinks 、 registry
其余的有一些常驻的server sink,用于长期作为sink 获取 注册信息。
将childMainClass 设置为 spark-submit --class 参数中的类
然后childMainClass 作为prepareSubmitEnvironment 的 返回
SparkSubmit.runMain
方法中 对 prepareSubmitEnvironment 返回的 childMainClass作判别
如果是SparkApplication的子类,就执行 子类
其他的就执行JavaMainApplication,直接执行spark-submit --class指定的 main类的main方法
SparkSession.builder()
返回一个 new Builder ,然后 getOrCreate 方法中调用create 方法
在create方法中创建MetricsSystemInstances
2) sources
spark的每一个endpoint 都配备有自身的source,向metricsSystem发送消息
以ExecutorSource为例,
executor.
run()结束后更新相应的指标到 execuorSource中去
数据都被记录到 executorSource中去了
3) Sinks
以CSVSinks为例,
初始化绑定好文件后,
调用CsvReporter.start 开启 codahale .CsvReporter的Sink操作
CsvSink.report 触发 CsvReporter.report方法,从metricRegistry中获取指标
CsvSink.report
CsvReporter.report
4) 总结
MetricSystems ≈ codahale .MetricRegistry (MetricSystem的其他内容就是register 和 start 、 stop 、 report 方法)
ExecutorSources ≈ 一系列 codahale 框架的指标,将这些指标注册到 codahale .MetricRegistry中
CSVSink ≈ codahale 框架的CSVReporter
MetricSystems.start ≈ source注册到MetricRegistry 、 Sink注册到MetricRegistry 、 Sinks.start(codahale 框架中 reporter.start) 方法
MetricSystems.start ≈ sinks.report ≈ MetricRegistry 相当于是一个容器,codahale.CsvReporter.report 触发指标的读取
综上,如果自写一套监控体系,我是可以办到的了
2023-10-31 10:20:15 8阅读
spark metrics 源码分析
1) 主要核心类是 MetricsSystem
MetricsSystem 有三个主要成员:sources 、 sinks 、 registry
其余的有一些常驻的server sink,用于长期作为sink 获取 注册信息。
将childMainClass 设置为 spark-submit --class 参数中的类
然后childMainClass 作为prepareSubmitEnvironment 的 返回
SparkSubmit.runMain
方法中 对 prepareSubmitEnvironment 返回的 childMainClass作判别
如果是SparkApplication的子类,就执行 子类
其他的就执行JavaMainApplication,直接执行spark-submit --class指定的 main类的main方法
SparkSession.builder()
返回一个 new Builder ,然后 getOrCreate 方法中调用create 方法
在create方法中创建MetricsSystemInstances
2) sources
spark的每一个endpoint 都配备有自身的source,向metricsSystem发送消息
以ExecutorSource为例,
executor.
run()结束后更新相应的指标到 execuorSource中去
数据都被记录到 executorSource中去了
3) Sinks
以CSVSinks为例,
初始化绑定好文件后,
调用CsvReporter.start 开启 codahale .CsvReporter的Sink操作
CsvSink.report 触发 CsvReporter.report方法,从metricRegistry中获取指标
CsvSink.report
CsvReporter.report
4) 总结
MetricSystems ≈ codahale .MetricRegistry (MetricSystem的其他内容就是register 和 start 、 stop 、 report 方法)
ExecutorSources ≈ 一系列 codahale 框架的指标,将这些指标注册到 codahale .MetricRegistry中
CSVSink ≈ codahale 框架的CSVReporter
MetricSystems.start ≈ source注册到MetricRegistry 、 Sink注册到MetricRegistry 、 Sinks.start(codahale 框架中 reporter.start) 方法
MetricSystems.start ≈ sinks.report ≈ MetricRegistry 相当于是一个容器,codahale.CsvReporter.report 触发指标的读取
综上,如果自写一套监控体系,我是可以办到的了