大咖直播-鸿蒙原生开发与智能提效实战!>>> 了解详情
写点什么

优步的 Pinot 查询改革:简化层和提高可观测性

作者:Leela Kumili

  • 2025-11-12
    北京
  • 本文字数:1185 字

    阅读完需:约 4 分钟

大小:589.93K时长:03:21
优步的Pinot查询改革:简化层和提高可观测性

优步重新设计了其Apache Pinot查询架构,以简化执行,支持更丰富的 SQL,并提高内部分析工作负载的可预测性。之前的 Neutrino 系统叠加了 Presto 和 Pinot,已被一个名为 Cellar 的轻量级代理所取代,并使用了 Pinot 的多阶段引擎轻量模式(Multi-Stage Engine Lite Mode)。新设计的目标是降低复杂性,强制执行限制,并为多租户提供更强的隔离。

 

以前,Neutrino作为一个无状态的微服务运行,结合了 Presto 协调器和工作进程。用户提交的 PrestoSQL 查询部分被推送到 Pinot 作为PinotSQL,而剩余的查询逻辑在 Neutrino 内执行。每个查询都包括默认的或用户定义的限制,以减少全表扫描的风险。尽管有这些保护措施,分层架构创造了复杂的语义,使得查询计划更难于解释,并且限制了共享相同代理的租户之间的隔离。



优步的 Neutrino 查询架构(图片来源:优步的博客文章

 

优步的 Apache Pinot 表可以达到数百 TB,拥有数十亿条记录,处理从个位数到数千 QPS 的查询率。在这个规模上的多阶段查询很容易超出资源或延迟预期。Pinot 1.4 引入了多阶段引擎轻量模式(Multi-Stage Engine Lite Mode),它强制执行可配置的叶子阶段的记录限制,并使用散射-收集(scatter-gather)模式。叶子阶段在 Pinot 服务器上运行,而其他操作符在代理上执行,确保复杂查询的可预测性能。

 

新架构引入了 Cellar,这是一个轻量级代理,它直接将查询转发到 Pinot 代理。对于基本工作负载,Pinot 的单阶段查询引擎负责处理执行,而对于高级 SQL 功能,优步使用多阶段引擎的轻量模式。MSE 轻量模式在叶子阶段确保可配置的最大记录限制,以防止过度使用资源,并在解释计划中显示这些限制以提高透明度。散射-收集执行仍然存在,叶子阶段在数据节点上,并在代理上聚合,同时在受控条件下支持连接和窗口函数。优步还为 MSE 轻量模式增加了监控和日志增强功能,使工程团队能够更有效地跟踪查询性能和排除高延迟请求。



高层的 Cellar 查询架构(图片来源:优步的博客

 

Cellar 还包括一个直接连接模式,允许租户绕过代理直接连接到 Pinot 代理。优步还集成了一个时序插件,它通过 Cellar 支持M3QL。重建的架构支持内部分析工作负载,如跟踪、日志搜索和细分。截至发布时,Cellar 处理了 Neutrino 之前查询量的大约 20%,计划扩大采用并逐步淘汰 Neutrino。



实现完整隔离的 Cellar 直连模式(图片来源:优步的博客

 

优步还为 Java 和 Go monorepos 提供了官方客户端库,以简化与 Cellar 的交互。客户端处理 Pinot 的响应格式,支持带有警告的部分结果,强制超时和重试,并发出延迟、查询成功和警告的指标。Grafana 仪表板为新用户提供了开箱即用的操作可见性。

 

根据优步的工程团队的说法,重新设计反映了 OLAP 系统的发展,以支持高 QPS 和亚秒级延迟,同时保持隔离和可预测性。他们计划在今年晚些时候向用户发布 MSE 轻量模式,并进一步改进它。

 

查看英文原文:Inside Uber’s Pinot Query Overhaul: Simplifying Layers and Improving Observability

2025-11-12 14:001

评论

发布
暂无评论

文创商城项目实战

猫九

从php5.6到golang1.19-文库App性能跃迁之路

百度Geek说

golang App 百度文库

如何用大模型 Prompt 解决行业场景问题?大厂中文教程来了!

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨

从头学Java17-Stream API(二)结合Record、Optional

Optional java17 Stream API

开源数据集成平台SeaTunnel:MySQL实时同步到es

javalover123

同步 数据同步 数据集成 CDC 实时

C++中vector自定义大小方式

芯动大师

Git教学

猫九

git 学习

星辰天合公司产品完成阿里云PolarDB数据库产品生态集成认证

阿里云数据库开源

polarDB PolarDB-X PolarDB for PostgreSQL

沙漠觅绿洲——华为HMS生态强势赋能伙伴成功掘金中东非

最新动态

华为云代码托管CodeArts Repo:保护企业核心代码资产安全

云计算 华为云 代码托管 华为开发者大会2023

用Vue3编写一个简单的组件

互联网工科生

Vue 3 slots

JavaScript 函数

猫九

不容错过的基础设施专场!今天4点,关于全场景质量协同平台T-One的介绍 | 第86-96期

OpenAnolis小助手

开源 基础设施 操作系统 龙蜥大讲堂 T-one

华为云“盘古气象”登上Nature!

新消费日报

华为云盘古气象大模型研究成果在《Nature》正刊发表

新消费日报

专利技术系列 001 | 鹏云网络分布式系统脑裂问题解决方案

鹏云网络

云计算 分布式系统 分布式存储 分布式系统脑裂 软件定义存储

前端开发需要了解的工具集合

树上有只程序猿

新兴技术诞生,国产操作系统崛起| 社区征文

芯动大师

操作系统 国产开源 年中技术盘点

代码随想录训练营Day08 - 字符串(上)

jjn0703

企业利用bi商业智能工具有哪些改变呢?以瓴羊QuickBI为例

对不起该用户已成仙‖

AWS云VS阿里云 横向对比

WuKongCoder

云计算 阿里云 AWS EMR

KaiwuDB 亮相 2023 可信数据库发展大会

KaiwuDB

KaiwuDB 2023可信数据库发展大会

java面试题

程序员小张

es笔记五之term-level的查询操作

Hunter熊

elasticsearch

机器学习洞察 | JAX,机器学习领域的“新面孔”

亚马逊云科技 (Amazon Web Services)

机器学习

直播软件开发知识:实现感知网络质量功能

山东布谷科技

源码 软件 软件开发 直播 源码搭建

Monibuca 中的内存复用

不卡科技

GC go语言 流媒体开发 内存池 Monibuca

软件测试 | 测试设计技巧—游戏类

测吧(北京)科技有限公司

测试

软件测试/测试开发丨Python常用数据结构-集合Set

测试人

Python 程序员 软件测试 测试开发

prometheus Histogram 统计原理

蓝胖子的编程梦

Grafana Prometheus #Grafana #Prometheus #监控

优步的Pinot查询改革:简化层和提高可观测性_后端_InfoQ精选文章