当前位置:   article > 正文

腾讯 PB 级大数据计算如何做到秒级?_pb数据秒级查询

pb数据秒级查询

天穹 SuperSQL 是腾讯自研,基于统一的 SQL 语言模型,面向机器学习智能调优,提供虚拟化数据和开放式计算引擎的大数据智能融合平台。在开放融合的 Data Cloud 上,业务方可以消费完整的数据生命周期,从采集-存储-计算-分析-洞察。还能够满足位于不同数据中心、不同类型数据源的数据联合分析/即时查询的需求。

Presto 在腾讯天穹 SuperSQL 大数据生态中,定位为实现秒级大数据计算的核心服务。主要面向即席查询、交互式分析等用户场景。Presto 服务了腾讯内部的不同业务场景,包括微信支付、QQ、游戏等关键业务。日均处理数据量 PB 级,P90 查询耗时为 50s,全面提升各业务数据实时分析性能,有效助力业务增长。本篇文章将揭秘腾讯大数据在 Presto 上的核心工作,包括易用性、稳定性、性能,以及未来的主要方向等方面。

1 天穹 Presto 整体架构

天穹 Presto 作为天穹 SuperSQL 的主要执行引擎之一,主要承担着加速用户 SQL 执行速度的角色。SuperSQL 通过智能路由(RBO/CBO/HBO)的方式,智能筛选出合适的 SQL 并分发给 Presto 执行,以加速 SQL 计算。另外,如果 Presto 执行失败,SuperSQL 也能自动 Failover 到 Hive 或 Spark 重新执行,以确保用户 SQL 能顺利执行完成,而整个过程对用户透明、无感知。

天穹 Presto 采用了 on K8s 容器化部署的方式,具备自动化运维、弹性伸缩等云原生能力。同时支持为不同的业务独立部署专属的 Presto 集群,以避免造成不同集群负载的相互影响。

得益于 Presto 的多数据源访问能力,天穹 Presto 支持对接了 Hive、Iceberg、MySQL 等数据源,且为了更好地支持内部的业务,我们也扩展开发了内部的 TDW Connnector,支持访问腾讯内部的数据仓库数据(TDW,Tencent distributed Data Warehouse)。同时天穹 Presto 使用了 Alluxio 作为数据源(Hive 表、Iceberg 表)的缓存层,用于加速热点数据的访问,可有效提升 Presto 查询的效率。

2 易用性增强

2.1 Hive 语法兼容

由于部分用户习惯于使用 Hive 的语法,而 Presto 自身的语法语义与 Hive 相比又有些不同,因此天穹 Presto 在引擎侧做了兼容部分 Hive 语法语义的工作,主要包括:数值除法、数组下标取值、Hive UDF 支持、Mapjoin Hint、隐式转换等。

对于 Mapjoin Hint,其实是对应于 Presto 中的 Broadcast Join,用户通过 Mapjoin Hint 来指定多表 Join 中的需要 Broadcast(广播)的表,以此提升查询的性能,适用于大小表 Join 的场景。目前已支持在 Inner Join 和 Left Join 中使用 Mapjoin Hint。

  1. -- Presto采用Broadcast Join,Broadcast的表为test2
  2. select t1.b, /*+mapjoin(t2)*/ t2.b2 from test1 t1 join test2 t2 on t1.a = t2.a2;
  3. -- Presto采用Broadcast Join,Broadcast的表为test1test3
  4. select t1.b, /*+mapjoin(t1,t3)*/ t2.b2, t3,b3 from test1 t1 join test2 t2 on t1.a = t2.a2 join test3 t3 on t1.a=t3.a3;

由于原生 Presto 不支持数值类型与字符串之间的隐式转换,为了兼容部分习惯于使用隐式转换的用户,天穹 Presto 在引擎侧做了增强,以支持类似于 Hive 语法中隐式转换的功能。

天穹 Presto 隐式转换规则表如下所示:(绿色表示支持从 Source Type 到 Target Type 的隐式转换,其余空白格表示不支持类型之间的隐式转换)。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/653330
推荐阅读
相关标签
  

闽ICP备14008679号