Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

0

Uber如何用Presto和“快速查询”策略提升数据分析速度:一场技术与效率的博弈

引言: 在瞬息万变的共享出行领域,数据分析速度直接关系到Uber的运营效率和商业决策。面对海量数据,Uber如何才能在毫秒之间洞察关键信息,从而保持竞争优势?答案是:Presto和一套巧妙的“快速查询”策略。这篇文章将深入探讨Uber如何利用开源分布式SQL查询引擎Presto,并通过一系列技术优化,将基于SQL的数据分析速度提升到一个新的高度。

Presto:Uber数据分析的基石

Uber的庞大数据体系涵盖了Apache Hive、Apache Pinot、MySQL和Apache Kafka等多个数据源。为了高效地整合和分析这些数据,Uber选择了Presto——一款开源的分布式SQL查询引擎。Presto能够跨越不同的数据源进行统一查询,为数据分析师提供了一个简洁易用的接口,无需学习和掌握多种不同数据库的SQL语法。这极大地简化了数据分析流程,提高了效率。

然而,即使是强大的Presto,也面临着性能瓶颈。在Uber庞大的数据量面前,一些查询的执行时间可能过长,影响了业务决策的及时性。尤其是一些“快速查询”(定义为能在两分钟内完成的查询),虽然只占总查询数的一半,却对业务的实时响应至关重要。

“快速查询”策略:精准预测与高效路由

为了解决“快速查询”的性能问题,Uber工程师并没有简单地增加服务器资源,而是采取了一套更精细化的策略:精准预测哪些查询属于“快速查询”,并为其分配专门的处理资源。

首先,Uber工程师利用历史数据,为每个查询生成一个“指纹”。这个指纹是通过去除查询中的注释、空格和文字值后计算出的唯一哈希值。通过分析这些指纹与查询执行时间的关联,他们可以预测一个新查询是否属于“快速查询”。 经过反复测试,他们发现使用抽象指纹,并以5天为回溯窗口计算P90值,能够在准确性和覆盖率之间取得最佳平衡。 这套预测模型的核心在于利用历史数据建立一个可靠的预测机制,避免将宝贵的计算资源浪费在那些本应快速完成的查询上。

其次,Uber工程师对查询的路由机制进行了优化。最初,他们尝试将快速查询和非快速查询放在同一个队列中,根据用户优先级进行处理。然而,这种方法导致了快速Presto集群的利用率不足,因为慢速查询会阻塞快速查询的执行。

在第二次尝试中,他们为快速查询创建了独立的队列。一旦查询通过预测模型验证为“快速查询”,就会被直接路由到专门的快速Presto集群。这使得快速查询能够得到优先处理,极大地缩短了其端到端延迟,超过75%的预定查询其端到端SLA有了数量级的提升。

持续优化:迈向更完美的解决方案

尽管取得了显著的成果,Uber工程师并没有止步于此。在生产环境中运行一段时间后,他们发现快速查询的处理速度非常快,以至于根据优先级进行队列路由的必要性降低了。 这促使他们开始探索更进一步的优化方案:创建一个完全专用于快速查询的子系统。 这将进一步提高集群利用率,并简化路由逻辑,从而实现更高效的数据分析。

结论:技术创新与效率提升的完美结合

Uber利用Presto和“快速查询”策略的案例,展现了技术创新如何有效提升数据分析效率。 这套策略的核心在于精准预测、高效路由和持续优化。 通过对查询进行精准分类和资源分配,Uber成功地解决了Presto在处理海量数据时可能遇到的性能瓶颈,确保了关键业务数据的快速分析和及时响应。 这不仅提升了Uber的运营效率,也为其他大型数据驱动型企业提供了宝贵的经验和借鉴。 未来,随着技术的不断发展,我们有理由相信,Uber的这套数据分析策略将会得到进一步的完善和优化,为其在竞争激烈的市场中保持领先地位提供持续的动力。

参考文献:

(注:由于无法访问外部网站,参考文献链接为示例,请根据实际情况替换。)


>>> Read more <<<

Views: 0

0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注