Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >从InfluxDB到StarRocks:Grab实现Spark监控平台10倍性能提升

从InfluxDB到StarRocks:Grab实现Spark监控平台10倍性能提升

原创
作者头像
StarRocks
发布于 2025-05-11 12:36:12
发布于 2025-05-11 12:36:12
13500
代码可运行
举报
运行总次数:0
代码可运行

Grab 是东南亚领先的超级应用,业务涵盖外卖配送、出行服务和数字金融,覆盖东南亚八个国家的 800 多个城市,每天为数百万用户提供一站式服务,包括点餐、购物、寄送包裹、打车、在线支付等。 为了优化 Spark 监控性能,Grab 将其 Spark 可观测平台 Iris 的核心存储迁移至 StarRocks,实现了显著的性能提升。新架构统一了原本分散在 Grafana 和 Superset 的实时与历史数据分析,减少了多平台切换的复杂性。得益于 StarRocks 的高性能查询引擎,复杂分析的响应速度提升 10 倍以上,物化视图和动态分区机制有效降低运维成本。此外,直接从 Kafka 摄取数据简化了数据管道架构,使资源使用效率提升 40%

作者:

Huong Vuong, Senior Software Engineer, Grab

Hai Nam Cao, Data Platform Engineer, Grab

一、Iris——Grab 的 Spark 可观测性平台介绍

(一)Iris 的作用

Iris 是 Grab 开发的定制化 Spark 作业可观测性工具,在作业级别收集和分析指标与元数据,深入洞察 Spark 集群的资源使用、性能和查询模式,提供实时性能指标,解决了传统监控工具仅在 EC2 实例级别提供指标的局限,使用户能按需访问 Spark 性能数据,助力更快决策和更高效的资源管理。

(二)Iris 面临的挑战

随着业务发展,Iris 暴露出一些问题:

  1. 分散的用户体验与访问控制:可观测性数据分散在 Grafana(实时)和 Superset(历史),用户需切换平台获取完整视角,且 Grafana 对非技术用户不友好,权限控制粒度粗。
  2. 运营开销:离线分析数据管道复杂,涉及多次跳转和转换。
  3. 数据管理:管理 InfluxDB 中的实时数据与数据湖中的离线数据存在困难,处理字符串类型元数据时问题尤为突出。

二、系统架构概览

(一)架构调整

为解决上述问题,Grab 对架构进行重大调整,从 Telegraf/InfluxDB/Grafana(TIG)堆栈转向以 StarRocks 为核心的架构。新架构包括以下关键组件:

(图1. 集成了 StarRocks 的新 Iris 架构)

  1. StarRocks 数据库:替代 InfluxDB,存储实时和历史数据,支持复杂查询。
  2. 直接 Kafka 摄入:StarRocks 直接从 Kafka 获取数据,摆脱对 Telegraf 的依赖。
  3. 定制 web 应用(Iris UI):取代 Grafana 仪表板,提供集中、灵活的界面和自定义 API
  4. Superset 集成:继续保留并连接 StarRocks,提供实时数据访问,与自定义 Web 应用保持一致。
  5. 简化的离线数据处理:StarRocks 直接定期备份到 S3,简化了之前复杂的数据湖管道。

(二)关键改进

新架构带来诸多改进:

  1. 统一的数据存储:实时和历史数据统一存储,便于管理和查询。
  2. 简化的数据流:减少数据传输环节,降低延迟和故障点。
  3. 灵活的可视化:自定义 Web 应用提供符合用户角色需求的直观界面。
  4. 一致的实时访问:保证自定义应用和 Superset 之间数据一致性
  5. 简化的备份和数据湖集成:支持直接备份至 S3,简化数据湖集成流程。

三、数据模型与数据摄取

(一)使用场景

Iris 可观测性系统主要针对 “集群观测” 场景,涵盖临时使用(团队用户共享预创建集群)和作业执行(每次提交作业创建新集群)两种情况。

(二)关键设计要点与表结构

针对每个集群,捕获元数据和指标,主要包含集群元数据、集群 Worker 指标、集群 Spark 指标三类表:

  1. 集群元数据:记录集群相关的各类元数据信息,如报告日期、平台、Worker UUID、集群 ID、作业 ID 等。
  2. 集群 Worker 指标:存储 Worker 的 CPU 核心数、内存、堆使用字节数等指标数据。
  3. 集群 Spark 指标:包含 Spark 应用的各种运行指标,如记录读写数量、字节读写量、任务数量等。

(三)从 Kafka 摄取数据至 StarRocks

利用 StarRocks 的 Routine Load 功能从 Kafka 导入数据,如为集群工作节点指标创建 routine load 作业,持续从指定 Kafka 主题摄取数据并进行 JSON 解析。StarRocks 提供内置工具监控例行加载任务,可通过特定查询查看加载状态。

四、统一系统处理实时与历史数据

新的 Iris 系统采用 StarRocks 高效管理实时和历史数据,并通过以下三个关键特性实现:

1.实时数据摄取

  • 利用 StarRocks 的 Routine Load,实现从 Kafka 近乎实时的数据摄取。
  • 多个加载任务并行消费不同分区的 topic,使数据在采集后的几秒内即可进入 Iris 表。
  • 这一快速摄取能力确保监控信息的时效性,让用户能够随时掌握 Spark 作业的最新状态。

2.历史数据存储与分析

  • StarRocks 作为持久化存储,保存元数据和作业指标,并设置数据存活时间(TTL)超过 30 天。
  • 这使我们能够直接在 StarRocks 中分析过去 30 天的作业运行情况,查询速度远超基于数据湖的离线分析。

3.物化视图优化查询性能

  • 我们在 StarRocks 中创建了物化视图,用于预计算和聚合每次作业运行的数据。
  • 这些视图整合元数据、工作节点指标和 Spark 指标,生成即用型的摘要数据。
  • 这样,在 UI 中访问作业运行概览时,无需执行复杂的 Join 操作,提高 SQL 查询和 API 请求的响应速度。

这一架构相比以 InfluxDB 为基础的旧系统有显著提升:

  • 作为时序数据库,InfluxDB 不擅长处理复杂查询和 Join 操作,导致查询性能受限。
  • InfluxDB 不支持物化视图,难以创建预计算的作业运行摘要 (job-run summary)。
  • 过去,我们需要借助 Spark 和 Presto 在数据湖中查询过去 30 天的作业运行情况,速度远不及直接查询 StarRocks。

五、查询性能与优化

(一)物化视图

  1. 核心特性:StarRocks 支持同步(SYNC)和异步(ASYNC)物化视图,Grab 主要使用 ASYNC 视图,因其支持多表 Join,对作业运行摘要至关重要。可灵活配置视图刷新方式,如即时刷新或按时间间隔刷新。
  2. 分区 TTL:通过设置分区存活时间(Partition TTL),通常为 33 天,控制历史数据存储量,保证物化视图高性能,避免过多占用存储空间,同时确保快速访问近期历史数据。
  3. 选择性分区刷新:允许仅刷新物化视图特定分区,降低维护视图最新状态的计算开销,尤其适用于大型历史数据集。

(二)分区策略

表按日期分区,便于高效裁剪历史数据,查询近期作业或特定时间范围数据时,排除无关分区,减少扫描数据量,加快查询速度。

(三)动态分区策略

利用 StarRocks 的动态分区功能,新数据到达时自动创建分区,数据过期时自动删除旧分区,无需人工干预即可维持最佳查询性能。可通过特定 SQL 命令检查表的分区状态,对于超过 30 天的数据,使用每日定时任务备份至 Amazon S3,之后映射到数据湖表,不影响核心可观测性系统性能。

(四)数据副本机制

StarRocks 采用多节点数据复制策略,该设计在容错能力和查询性能两方面都至关重要。这一策略支持并行查询执行,从而加快数据检索速度。特别是在前端查询场景中,低延迟对用户体验至关重要。这种方法与其他分布式数据库系统(如 Cassandra、DynamoDB 以及 MySQL 的主从架构)中的最佳实践一致。

六、统一的 Web 应用程序

(一)后端

使用 Golang 构建,连接 StarRocks 数据库,查询原始表和物化视图数据,负责身份验证和权限管理,保障用户数据访问权限。

(二)前端

提供多个关键界面,如任务运行列表、任务状态、任务元数据等,任务概览页面展示关键摘要信息,帮助用户快速了解 Spark 任务运行和资源利用情况。

(图2:作业总览界面示例)

七、高级分析与洞察

(一)历史运行分析

创建物化视图聚合过去 30 天任务运行数据,包含运行次数、各类资源使用的 p95 值等指标,为分析任务趋势提供数据支持。以下为示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE MATERIALIZED VIEW job_run_summaries_001
    REFRESH ASYNC EVERY(INTERVAL 1 DAY)
    AS
    select platform,
        job_id,
        count(distinct run_id)                                as count_run,
        ceil(percentile_approx(total_instances, 0.95))        as p95_total_instances,
        ceil(percentile_approx(worker_instances, 0.95))       as p95_worker_instances,
        percentile_approx(job_hour, 0.95)                     as p95_job_hour,
        percentile_approx(machine_hour, 0.95)                 as p95_machine_hour,
        percentile_approx(cpu_hour, 0.95)                     as p95_cpu_hour,
        percentile_approx(worker_gc_hour, 0.95)               as p95_worker_gc_hour,
        ceil(percentile_approx(driver_cpus, 0.95))            as p95_driver_cpus,
        ceil(percentile_approx(worker_cpus, 0.95))            as p95_worker_cpus,
        ceil(percentile_approx(driver_memory_gb, 0.95))       as p95_driver_memory_gb,
        ceil(percentile_approx(worker_memory_gb, 0.95))       as p95_worker_memory_gb,
        percentile_approx(driver_cpu_utilization, 0.95)       as p95_driver_cpu_utilization,
        percentile_approx(worker_cpu_utilization, 0.95)       as p95_worker_cpu_utilization,
        percentile_approx(driver_memory_utilization, 0.95)    as p95_driver_memory_utilization,
        percentile_approx(worker_memory_utilization, 0.95)    as p95_worker_memory_utilization,
        percentile_approx(total_gb_read, 0.95)                as p95_gb_read,
        percentile_approx(total_gb_written, 0.95)             as p95_gb_written,
        percentile_approx(total_memory_gb_spilled, 0.95)      as p95_memory_gb_spilled,
        percentile_approx(disk_spilled_rate, 0.95)            as p95_disk_spilled_rate
    from iris.job_runs
    where report_date >= current_date - interval 30 day
    group by platform, job_id;

(二)推荐 API

基于趋势分析结果构建推荐 API,提供优化建议,如调整资源分配、识别潜在瓶颈或修改调度策略,以优化成本和性能。

(三)前端集成

我们的 API 生成的推荐结果已集成到 Iris 前端。用户可以在任务概览或详情页面直接查看这些建议,从而获得可执行的优化指导,提升 Spark 任务的效率。

以下是一个示例:如果某个任务的资源利用率长期低于 25%,系统会建议将工作节点的规模缩小一半,以降低成本。

(图3:资源利用率较低的作业示例)

(四)Slackbot 集成

为了让这些洞察更加便捷可用,我们将推荐系统集成到了 SpellVault(Grab 的生成式 AI 平台)应用中。这样,用户可以直接在 Slack 上与推荐系统交互,无需频繁访问 Iris Web 界面,也能随时获取任务性能信息和优化建议。

(图 4. SpellVault 集成示例)

八、迁移与推广

(一)迁移策略

  • 将实时 CPU/内存监控图表从 Grafana 完全迁移到新的 Iris UI。
  • 迁移完成后,将弃用 Grafana 仪表盘。
  • 继续保留 Superset 以支持平台指标和特定的 BI 需求。

(二)用户引导与反馈

  • Iris 已部署在 One DE 应用中,集中化管理数据工程工具的访问。
  • UI 中的反馈按钮使用户可以轻松提交意见和建议。

九、经验总结与未来规划

以 StarRocks 为核心开发的 Iris Web 应用,为 Grab 的 Spark 观测能力带来革命性提升,实现作业级别的成本分摊机制。未来,Grab 期待在高级分析和机器学习驱动的洞察方面取得突破,推动数据工程发展。

(一)经验总结

  • 统一数据存储:使用 StarRocks 作为实时和历史数据的单一数据源,显著提升了查询性能并优化了系统架构。
  • 物化视图:利用 StarRocks 的物化视图进行预聚合,大幅加快了 UI 端的查询响应速度。
  • 动态分区:实施动态分区机制,随着数据量增长自动管理数据保留,保持最佳性能。
  • 直接 Kafka 摄取:StarRocks 直接从 Kafka 获取数据,简化了数据管道,降低了延迟和复杂性。
  • 灵活的数据模型:相比之前基于时间序列的 InfluxDB,StarRocks 的关系型数据模型支持更复杂的查询,同时简化了元数据管理。

(二)未来规划

  • 增强推荐系统:扩展推荐功能,提供更深入的优化建议,例如识别潜在瓶颈,并推荐 Spark 任务的最佳配置,以提升运行效率并降低成本。
  • 高级分析:利用完整的 Spark 任务指标数据,深入分析任务性能和资源使用情况。
  • 集成扩展:加强 Iris 与其他内部工具和平台的集成,提高用户采用率,确保数据工程生态系统的无缝体验。
  • 机器学习集成:探索将机器学习模型应用于 Spark 任务的预测性分析,以优化性能。
  • 可扩展性优化:持续优化系统,以支持不断增长的数据量和用户负载。
  • 用户体验提升:基于用户反馈持续改进 Iris UI/UX,使其更加直观和信息丰富。

为提升可读性,本文对技术细节进行了精简,如需查看完整 SQL 示例及实现细节,请参阅原文:https://engineering.grab.com/building-a-spark-observability

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
StarRocks 在爱奇艺大数据场景的实践
在爱奇艺的大数据分析场景中,通常需要实现两个核心目标:一是看过去,包括生成报表、分析剧集热度以及会员运营等;二是知未来,即预测用户增长和预估收入。虽然我们的最终目标是精准预测未来,但由于这一任务难度较大,我们更多地是通过精准的报表和历史数据分析,挖掘数据中的潜在价值,从而为未来决策提供支持。
StarRocks
2025/03/03
1320
StarRocks 在爱奇艺大数据场景的实践
B站基于Hudi+Flink打造流式数据湖的落地实践
上图展示了当前B站实时数仓的一个简略架构,大致可以分为采集传输层、数据处理层,以及最终的AI和BI应用层。为保证稳定性,数据处理层是由以实时为主,以离线兜底的两条链路组成,即我们熟知的批流双链路。
ApacheHudi
2023/09/04
1.3K0
B站基于Hudi+Flink打造流式数据湖的落地实践
【活动回顾】StarRocks Singapore Meetup #2 @Shopee
3 月 13 日,StarRocks 社区在新加坡成功举办了第二场 Meetup 活动,主题为“Empowering Customer-Facing Analytics”。本次活动在 Shopee 新加坡办公室举行,吸引了来自 Shopee、Grab 和 Pinterest 的专家讲师以及 50 多位参会者。大家围绕电商、BI 报表和广告场景中的数据分析挑战展开了深入探讨,并分享了如何利用 StarRocks 为关键业务提供更快、更精准的数据分析解决方案。
StarRocks
2025/03/28
800
【活动回顾】StarRocks Singapore Meetup #2 @Shopee
vivo 湖仓架构的性能提升之旅
在即席分析方面,我们的解决方案主要基于 Spark 和 Presto 两大计算引擎。作为 vivo 大数据研发治理平台的重要组成部分,即席分析模块因其高频率的使用而显得尤为关键。通过用户调研我们了解到,现有系统存在查询响应时间较长的问题,这直接影响了工作效率;同时,语法兼容性的不足也给用户带来了不便。因此,针对该模块进行优化,以提升查询速度和增强语法兼容性,已经成为我们团队工作的重中之重。
StarRocks
2025/03/22
410
vivo 湖仓架构的性能提升之旅
StarRocks的初步介绍和使用
官方文档:https://docs.starrocks.io/zh/docs/quick_start/
码之有理
2024/12/09
1K0
滴滴 x StarRocks:极速多维分析创造更大的业务价值
滴滴集团作为生活服务领域的头部企业,正在全面测试和上线StarRocks,其中橙心优选经过一年多的数据体系建设,我们逐渐将一部分需要实时交互查询、即席查询的多维数据分析需求由ClickHouse迁移到了StarRocks中,StarRocks在稳定性、实时性方面也给了我们良好的体验,接下来以StarRocks实现的漏斗分析为例介绍StarRocks在橙心优选运营数据分析应用中的实践。
九州暮云
2021/09/29
8000
滴滴 x StarRocks:极速多维分析创造更大的业务价值
StarRocks x Iceberg:云原生湖仓分析技术揭秘与最佳实践
Lakehouse 湖仓一体架构是一种融合数据湖与数据仓库优势的新型架构,既具备数据湖开放统一的存储能力(支持多源异构数据低成本存储),又拥有数据仓库的高性能分析特性。其核心是构建统一数据存储底座(即 Single Source of Truth),基于同一套标准化数据资产,同时支撑多样化业务负载,覆盖企业 AI 建模、BI 分析等数据应用场景,实现从数据存储、治理到分析的全链路效率提升。
StarRocks
2025/05/30
1010
StarRocks x Iceberg:云原生湖仓分析技术揭秘与最佳实践
技术分享 | ClickHouse & StarRocks 使用经验分享
本篇分享下个人在实时数仓方向的一些使用经验,主要包含了ClickHouse 和 StarRocks 这两款目前比较流行的实时数仓,文章仅代表个人拙见,有问题欢迎指出,Thanks♪(・ω・)ノ
爱可生开源社区
2023/01/17
4.8K0
从ClickHouse到StarRocks,易点天下数仓平台建设
作者 | 易点天下数据平台团队 近年来数字化搞得如火如荼,越来越多的人意识到数据的重要性。面对爆发式增长的数据,如何让数据有序的存储,快速的查询产生价值是数据仓库考虑的问题,也是 OLAP 引擎主要解决的问题。因此也产生了一批优秀的开源 OLAP 引擎,例如 Kylin、Druid、ClickHouse、StarRocks 等。 易点天下作为一家技术驱动发展的企业国际化智能营销服务公司,公司积极采用大数据和人工智能技术来落地和推动业务的发展。随着公司业务的扩展,数据处理需求日益增多,业务快速迭代和发展的情
深度学习与Python
2023/03/29
1.5K0
从ClickHouse到StarRocks,易点天下数仓平台建设
网易游戏如何基于 Apache Doris 构建全新湖仓一体架构
随着网易游戏品类及产品的快速发展,游戏数据分析场景面临着越来越多的挑战,为了保证系统性能和 SLA,要求引入新的组件来解决特定业务场景问题。为此,网易游戏引入 Apache Doris 构建了全新的湖仓一体架构。经过不断地发展,目前已扩展至十余集群、为内部上百个项目提供了稳定可靠的数据服务、日均查询量数百万次,整体查询性能得到 10-20 倍提升。
深度学习与Python
2024/07/24
3610
网易游戏如何基于 Apache Doris 构建全新湖仓一体架构
Flink+StarRocks 实时数据分析实战
摘要:本文整理自 StarRocks 社区技术布道师谢寅,在 Flink Forward Asia 2022 实时湖仓的分享。本篇内容主要分为五个部分:
857技术社区
2023/07/26
1.6K0
Flink+StarRocks 实时数据分析实战
StarRocks存算分离在得物的降本增效实践
OLAP引擎在得物的客服、风控、供应链、投放、运营、ab实验等大量业务场景发挥重要作用,在报表、日志、实时数仓等应用场景都有广泛的应用。
得物技术
2024/12/02
3890
StarRocks Community Monthly Newsletter (Apr)
🔎Release Note: https://docs.mirrorship.cn/zh/releasenotes/release-3.4/
StarRocks
2025/05/18
850
StarRocks Community Monthly Newsletter (Apr)
DorisDB升级为StarRocks,全面开源!
在过去相当长的一段时间,对于ClickHouse 与 DorisDB的性能之争一直经久不息。
用户6070864
2021/09/24
5K0
快手:从 Clickhouse 到 Apache Doris,实现湖仓分离向湖仓一体架构升级
在当今这个数据洪流的信息时代下,数据已跃升为企业不可或缺的核心资产。深度挖掘并提炼数据内在价值,成为支撑企业战略决策的重要依据。在此背景下,快手建立了 OLAP 系统,该系统在快手应用极为广泛,每天承载近 10 亿的查询请求,为内外多个业务场景提供数据服务。具体场景包括:
SelectDB技术团队
2024/09/27
4130
干货 | StarRocks在携程大住宿智能数据平台的应用
Wenjun,携程资深软件工程师,负责大住宿数据智能平台的研发与维护,对于大数据领域技术有浓厚兴趣。
携程技术
2021/11/02
1.7K0
2021年ClickHouse最王炸功能来袭,性能轻松提升40倍
各位,今年 ClickHouse 最王炸的功能来啦,没错,就是期待已久的 Projection (投影) 功能。ClickHouse 现在的功能已经非常丰富强大了,但是社区用现实告诉我们,还可以进一步做的更好:)
Nauu
2021/09/17
3.2K0
性能追平存算一体!StarRocks 3.1 重磅发布,真正的云原生湖仓来了
8 月 7 日,StarRocks 3.1 重磅发布。新版本中,StarRocks 将影响性能表现的技术要素全部从存算一体架构引入到了存算分离架构,并针对云原生环境里的易用性、稳定性进行了一系列的优化。
深度学习与Python
2023/09/08
1.4K0
性能追平存算一体!StarRocks 3.1 重磅发布,真正的云原生湖仓来了
京东零售数据湖应用与实践
Lambda 架构设计的初衷是同时提供即时的实时数据处理和高度精确的批量数据处理,但是这种架构也带来了数据实时性和完整性的矛盾。
ApacheHudi
2024/11/23
1900
京东零售数据湖应用与实践
干货 | 提速10倍+,StarRocks 指标平台在携程火车票的实践
携程火车票事业群运营着铁友、携程火车票和去哪儿火车票等重要的业务和品牌,目前正在积极地拓展海外市场。火车票的指标平台旨在为业务人员提供便捷的指标查询服务,让业务人员能够快速灵活地获得这些业务和品牌相关的指标数据。
携程技术
2023/09/06
5900
干货 | 提速10倍+,StarRocks 指标平台在携程火车票的实践
推荐阅读
相关推荐
StarRocks 在爱奇艺大数据场景的实践
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档