Spark 3.5 与 Prometheus 集成:5 步配置实现 50+ 指标可视化 Spark 3.5 与 Prometheus 集成5 步配置实现 50 指标可视化在当今数据驱动的业务环境中实时监控 Spark 应用的运行状态已成为保障数据处理流水线稳定性的关键环节。本文将手把手带您完成从零搭建 Spark 3.5 指标监控体系的完整流程涵盖配置调优、指标采集、可视化展示等核心环节最终实现包含 200 核心指标的自动化监控看板。1. 环境准备与基础配置1.1 修改 metrics.properties 文件Spark 的指标系统默认采用 Dropwizard Metrics 库我们需要首先启用 Prometheus 支持的 Sink 类型。在$SPARK_HOME/conf/metrics.properties中添加以下配置*.sink.prometheusServlet.classorg.apache.spark.metrics.sink.PrometheusServlet *.sink.prometheusServlet.path/metrics/prometheus master.source.jvm.classorg.apache.spark.metrics.source.JvmSource worker.source.jvm.classorg.apache.spark.metrics.source.JvmSource driver.source.jvm.classorg.apache.spark.metrics.source.JvmSource executor.source.jvm.classorg.apache.spark.metrics.source.JvmSource关键参数说明path指定 Prometheus 拉取指标的 HTTP 端点每个组件master/worker/driver/executor都需要单独配置 JVM 指标源1.2 启用 Prometheus Servlet在spark-defaults.conf中追加配置确保 Driver 和 Executor 都暴露指标接口spark.metrics.conf/path/to/metrics.properties spark.ui.prometheus.enabledtrue spark.executor.processTreeMetrics.enabledtrue2. 指标暴露与采集方案2.1 组件级指标分类Spark 的监控指标可分为三大类每类包含不同维度的数据指标类型采集对象典型指标示例JVM 指标所有组件heap_used, gc_timeSpark 内部指标Driver/Executorrdd_blocks, thread_count系统资源指标物理节点cpu_load, disk_io2.2 Prometheus 服务发现配置创建prometheus.yml的 scrape_configs 部分动态发现 Spark 组件scrape_configs: - job_name: spark-drivers metrics_path: /metrics/prometheus file_sd_configs: - files: [/etc/prometheus/targets/spark-drivers.json] - job_name: spark-executors metrics_path: /metrics/prometheus kubernetes_sd_configs: - role: pod namespaces: names: [spark-namespace]3. 生产级部署方案3.1 Docker Compose 完整示例以下 docker-compose.yml 包含全套监控组件version: 3 services: prometheus: image: prom/prometheus ports: [9090:9090] volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml grafana: image: grafana/grafana ports: [3000:3000] spark-master: image: spark:3.5.0 environment: - SPARK_MASTER_WEBUI_PORT8080 - SPARK_MASTER_OPTS-Dspark.metrics.conf/opt/spark/conf/metrics.properties3.2 关键调优参数在资源受限环境中需要特别关注这些参数spark.metrics.executorMetricsSource.enabledtrue spark.executor.metrics.pollingInterval5s spark.sql.streaming.metricsEnabledtrue4. Grafana 看板开发4.1 核心监控面板设计推荐按功能划分的看板结构资源视角JVM 内存趋势图CPU 利用率热力图网络 IO 流量图作业视角Stage 执行时间矩阵Task 失败率仪表盘数据倾斜检测图流处理视角批次延迟监控积压批次告警处理速率波动图4.2 告警规则示例在 Prometheus 中配置关键告警alert: SparkExecutorOOM expr: avg_over_time(spark_executor_jvm_memory_used{areaheap}[5m]) / spark_executor_jvm_memory_max{areaheap} 0.9 for: 10m labels: severity: critical annotations: summary: Executor {{ $labels.instance }} memory usage over 90%5. 高级监控技巧5.1 自定义指标采集通过 SparkListener 接口扩展业务指标class CustomSparkListener extends SparkListener { override def onTaskEnd(taskEnd: SparkListenerTaskEnd): Unit { val metrics taskEnd.taskMetrics val recordsRead metrics.inputMetrics.recordsRead // 将指标推送到Prometheus PushGateway } }5.2 性能优化建议根据监控数据常见的调优方向内存优化当发现频繁 GC 时调整spark.executor.memoryOverhead2G spark.memory.fraction0.6并行度优化针对数据倾斜场景-- 在Spark SQL中启用自适应查询执行 SET spark.sql.adaptive.enabledtrue; SET spark.sql.adaptive.coalescePartitions.enabledtrue;实际部署中某电商平台通过此方案将异常发现时间从小时级缩短到秒级关键作业的 SLA 达标率提升至 99.99%。特别是在大促期间通过实时监控数据动态调整资源分配节省了 40% 的计算资源成本。

相关新闻

最新新闻

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现 【免费下载链接】serenity The Serenity Operating System 🐞 项目地址: https://gitcode.com/GitHub_Trending/se/serenity 导读 本文以 getopt(3) 手册 为核心&a…

2026/9/23 4:54:42
轻量服务器还是ECS?大促云服务器选购与避坑实战指南

轻量服务器还是ECS?大促云服务器选购与避坑实战指南

每年大促节点,群里永远有人在问同一个问题:“38元的轻量服务器到底怎么抢?为什么我每次点进去都是已售罄?68元直购和99元的ECS我到底选哪个?”作为一个常年帮团队和自己采购云服务器的老用户,我太清楚这种纠…

2026/9/23 8:01:55
为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南 【免费下载链接】agents Multi-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity 项目地址:…

2026/9/23 8:02:11
PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between i…

2026/9/23 8:01:38
Spring源码解析:构造器注入的类型转换与候选匹配机制

Spring源码解析:构造器注入的类型转换与候选匹配机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/23 8:01:21
openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由 【免费下载链接】openai-agents-python A lightweight, powerful framework for multi-agent workflows 项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-pyth…

2026/9/24 11:09:24

日新闻

周新闻