预计算技术+Hologres在阿里采集流量分析产品中的实践

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 康凯数据技术及产品部-平台技术

一、预计算与Hologres的关系

image.png

作为一个查询加速团队,我们的愿景是致力于打造低成本、高性能普惠查加速引擎,能够支持 A+流量分析、生意参谋、黄金策、友盟、 FBI/QBI具有海量数据交互分析产品。在成本可控情况下,使用AQPFastMap 预计算等技术,大幅提升海量数据查询性能,将响应时间降低至秒级或毫秒级。

上图最上层的数据产品侧支持了比如A+采集流量分析平台黄金策(阿里内部对于精细化人群运营平台)、圈人对人群特征分析)、生意参谋对商家和店铺商业型数据分析产品)、FBI/QBI阿里内部 BI 产品与云上 BI 产品)以及友盟数据分析平台中间加速层底下存储计算都由Hologres实现。

image.png

预计算往上即为OLAP 在线分析处理。 OLAP 按引擎大致可以分为两类关系模型——没有数据冗余和预处理机制,比较适合大数据量分析比如 Spark Presto 等;多维模型——提前按照维度与度量构成Cbube模型达到加速目,比较适合超大数据量和对性能要求较高OLAP 场景。

image.png

查询 11 当天天猫销量最高商品,传统的方式需要以下几个步骤首先要将双 11 这一天数据找出第二步按照数据进行商品聚合如果数据有 10 亿条,则需要按照 10 亿聚合查询时间根数据量呈线性关系。

而如果可以按照时间和商品维度将销售算出,则查询将不再与数据量有关。预计算核心在于打破查询时间随着数据量呈线性增长规律

预计算的结果数据需要载体存储和计算,因为预计算本身仍然是数据模型的维度。而Hologres是数据库维度,主要做数据分布、数据存储方式、索引以及查询执行计划。

image.png

预计算与Hologres是不同维度优化,并不冲突。预计算也需要强大运行载体做存储和计算,且它天然Cube模型更能发挥 Hologres作用。

image.png

查询加速平台角度考虑,选择Hologres有以下三个原因:

第一,算子能力预计算中会将很多数据变成 bitmap 因此需要强劲 bitmap 引擎。其次, bitmap 无法解决所有问题,比如分钟内转化周期漏斗金额频次高场景但是 Hologres为其提供了特殊解法。

第二,统一查询分析平台不仅自助分析,也有看板QPS需要毫秒级返回场景。我们希望可以用一套架构实现不同分析场景

第三,基于成本一体化架构。Hologres提供了热存、冷存外表等方案帮助企业降本提效。


二、A+流量分析介绍

image.png

A+流量分析平台是阿里集团统一全域流量分析平台,以页面、小站活动、 App 等作为切入点,经过埋点采集计算,构建出宏观概览数据,比如坑位效果、类目转化、成交路径分析、用户细分等致力于打造流量数据分析闭环,帮助业务发现流量问题提升流量转化。

比如想分析左下 App页面流量情况,能够查看其 PVUV平均停留时长、直接引导界面、全引导 PV 指标

为了与预计算模型更好地结合,我们将指标转化成预计算度量形式,比如UV 相当于去平均停留时长相当于 abg直接引导界面相当于四则运算。

image.png

针对流量分析领域需求产生分析模型分别是事件分析留存分析漏斗分析、转化分析、路径分析

事件分析是流量分析解决领域最重要、最广泛分析方法,核心围绕事件进行多维度分析。事件指用户在产品使用过程中触发一系列行为原则上分为几类与比如浏览点击曝光。阿里集团用四段式 SPM模型,能够唯一定位到用户在哪个站点、哪个页面、哪个区块和哪个位置触发了该事件。

事件报表界面也比较简单比如最上是浏览事件用户数,用户 UV 分组、品牌、时间等。为了与预计算结合,我们将指标与预计算模型进行对应。用户数页面和时间group by 品牌过滤筛选维度。

image.png

留存本质上有初始行为后续行为。界面上分析主体是登录用户设备定义留存时要定义两种行为根据时间计算。而对应预计算登录用户对应去重指标,筛选维度对应不同行为聚合维度


三、重点业务Hologres解决方案

image.png

当前,我们能够支持数据量级每天新增小于 1t 分析粒度可以查询周月。该背景下,产生的问题主要有以下几个:其一,性能问题,去重指标平均需要几分钟,用户体验不佳;其二,数据误差。无法满足客户对数据的精确度要求

事件分析即对条件内user ID 求基数留存即对两个行为集合做交求基数。两个集合做交并基数很容易联想到数据结构 bitmap bitmap0 1 分别对应人存在不存在。其次,bitmap是由 0 1 组成序列,可代表某一类条件的人的集合

因此,可以用 bitmap 高性能计算解决问题。但其中依然存在两个问题:一,原始 bitmap 虽然只有 1bit但如果有 10 亿人,数据量依然很大第二有了 bitmap ,还需要有存储以进行计算

因此,我们引入了Hologres Roaring BitmapRoaring bitmap可以理解为带压缩bitmap特殊结构Hologres Roaring bitmap分布式Roaring bitmap实现。

在存储上, Hologres实现了 Roaring bitmap数据类型。建表时,可以建 bigint 类型,可以建 varchar bitmap 类型。在单节上实现了bitmap 级别的交并差操作。此外,Hologres实现了一套基于分布式 bitmap 执行计划因此有了高性能bitmap 指引擎。

image.png

如上图所示,颜色区别出不同维度,但是颜色内维度一致。比如黄色代表 9 1 号浏览了 AB 页面绿色代表 9 2 号曝光了 AC 页面人。如果将结构变Bitmap ,应该进行哪些操作?

首先要使 user ID bitmap有唯一下标,比如 100101004 4。最后生成 bitmap 结构如上图下方所示。同一个维度具有天然聚合绿色代表在 9 2 号访问了 AC 页面曝光。

image.png

上图为基于Hologres Roaring Bitmap的架构。

左边云上 DataWorks,负责调度,每天调度到查询加速引擎系统。引擎内存储了元数据maxCompute负责将业务数据变 Bitmap 数据,导入到 HologresHologres盘古策略拥有极快的导入性能。Hologres MPP 结构,需要 bitmap 本身分组,某一段内保持自增,这也意味着人在组内序号是永远固定的。

上图右侧为存储逻辑视图,不同分组维度完全一样。

image.png

假设想要查询 9 1号所有 UV 值,首先业务层发 SQL Hologres前端节点生成执行计划。Hologres按组分,因此组内并行 9 1 号有两个数据,首先是Hologres索引将两个数据索引出来后rb_or_agg,将 Bitmap 做并操作,再调 rb_cardinality函数求基数求到第一组基数。第六组同理。所有组都并行,只需要merge big int 值,速度非常快。

image.png

留存的计算逻辑只需增加一步,因为需要与 2 数据做交留存。首先并,然后做rb_and_cardinality操作,参数两个 bitmap ,最后求出 count

改进之后的查询,几十T量级的UV类指标自助分析平均RT仅需 5s

image.png

圈人也是Hologres Roaring Bitmap的应用场景,本质上也是 bitmap 之间的交并差,但其结果并非单个数,而是bitmap。而Hologres能够支持 SQL ,因此可以bitmap进行insert select 操作,计算完成后天然地将人圈进Hologres。后续的画像本质上也是 bitmap

分析型场景 QPS 不高,但是阿里的生意参谋场景,有一个需求是简单交并差,它需要进行分析,但不能做成 KV 。因此我们巧妙地利用了非 bitmap 分组,利用业务素材分组加Hologres实现了简单分析场景1000+QPS

Hologres提供了实时生成 bitmap 能力,可以将明细表导入到 Hologres查询时实时生成 bitmap 以及进行交并差。

image.png

构建统一查询,主要源于以下几个场景的需求:

① 非加速表和预计算表库。预计算无法解决客户 100% 问题,只能解决痛点问题。因此,我们还需要非常快 OLAP 引擎做支撑。

② 预计算对比宽表能更充分发挥 Hologres性能。将宽表直接置于 OLAP 引擎,如果上层查询非常自由,分布无法确定,索引也无法确定。而预计算天然cuboid会变成分表形式,Hologres结合打造出高性能。

③ 分析型场景不仅有自助分析看板分析 QPS 高性等场景也希望可以通过 Hologres实现点查。

④ 预计算范畴问题。实时更新场景比如维度表要实时更新,原维度表无法导入可能出现跨库问题因此需要在一个库里。

image.png

上图从左到右是数据生产过程。左边是原始表中间平台是 model cube 维度。表维度分别是城市事件页面和日期。如果需要求一个pvCuboid 2nCuboid 生成后,Hologres逻辑结构聚合,一个Cuboid 对应一张表,天然分开。

image.png

Cuboid天然地将维度减少了,在做分布时,可以将常用查询作为分布键。层决定查询完全分布式。第二步利用 Hologres segment key 字段,通常时序字段,一般会带日期,而日期决定了 shard内文件快速搜索。然后将Cluster key 配置上高频filter索引,能够快速找到 block最后通过bitmap columns 将非高频 filter 配置上能够在每个块利用 bitmap 索引快速找到数据。

以上查询在在预计算类的自助分析平台平均RT小于 1 秒, KV 类指标RT10ms,可支撑百万QPS

image.png

成本是企业的重点关注。作为一个查询加速平台,我们维护表种类非常多,比如最底层明细表分表、抽样表等。业务系统会自己做分表但是通用产品比如 BI 产品不会帮助业务做分表。分表也属于 OLAP 查询加速领域需求可能会做近实时计算进行抽样

查询种类和使用周期不一样与成本息息相关。Hologres提供了热存、冷存外表存储介质,性能依次降低,成本依次升高可根据实际业务分析需求和时间周期查询需求自由选择。


Q&A

Qbitmap分组,假设是五百万组,如果在第组里浏览第二组预付款,两组之间的人如何对应上?

Abitmap 存储位与表维度没有任何关系,比如在第六组第五个的人永远都是在第五个。

Q冷数据是通过在 Hologres建外表形式存在 MaxComputer 吗?

A不是冷数据与外表区别在于外表还是外部存储,比如存到 MC ,但是冷数据是 Hologres自己的,只不过通过OSS 实现。

Q:通过什么方式使用冷热数据?

A:直接使用。冷存数据Hologres管理,但是存在 Hologres内部的 OSS里。热存用SSD存储格式依然Hologres自己内部格式,索引。使用方式上,有一张分区表,在分区表上定策略可以指定保留 7 14 天,14 天以上数据分区会整体转移到冷存

QHologres里什么时候建议建分区表?

A预计算场景不需要建分区表。如果没有实现预计算,首先小数据量不建议建分区,因为小分区多会导致碎片比较多文件比较多。另外每天固定查分区数据或整日替换等场景建议建分区。一般情况下,大于 1 亿建议建分区。

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
相关文章
|
21天前
|
SQL 运维 网络安全
【实践】基于Hologres+Flink搭建GitHub实时数据查询
本文介绍了如何利用Flink和Hologres构建GitHub公开事件数据的实时数仓,并对接BI工具实现数据实时分析。流程包括创建VPC、Hologres、OSS、Flink实例,配置Hologres内部表,通过Flink实时写入数据至Hologres,查询实时数据,以及清理资源等步骤。
|
20天前
|
运维 数据挖掘 网络安全
场景实践 | 基于Flink+Hologres搭建GitHub实时数据分析
基于Flink和Hologres构建的实时数仓方案在数据开发运维体验、成本与收益等方面均表现出色。同时,该产品还具有与其他产品联动组合的可能性,能够为企业提供更全面、更智能的数据处理和分析解决方案。
|
2月前
|
DataWorks 数据挖掘 关系型数据库
基于hologres搭建轻量OLAP分析平台解决方案评测
一文带你详细了解基于hologres搭建轻量OLAP分析平台解决方案的优与劣
381 8
|
3月前
|
数据可视化 数据挖掘 OLAP
基于 Hologres 搭建轻量 OLAP 分析平台评测报告
【9月更文第6天】开作为互联网手游公司的产品经理和项目经理,数据分析对于我们的业务至关重要。我们一直在寻找高效、可靠的数据分析解决方案,以更好地了解玩家行为、优化游戏体验和提升运营效率。近期,我们体验并部署了《基于 Hologres 搭建轻量 OLAP 分析平台》解决方案,以下是我们对该方案的评测报告。
89 12
基于 Hologres 搭建轻量 OLAP 分析平台评测报告
|
2月前
|
SQL 分布式计算 数据挖掘
加速数据分析:阿里云Hologres在实时数仓中的应用实践
【10月更文挑战第9天】随着大数据技术的发展,企业对于数据处理和分析的需求日益增长。特别是在面对海量数据时,如何快速、准确地进行数据查询和分析成为了关键问题。阿里云Hologres作为一个高性能的实时交互式分析服务,为解决这些问题提供了强大的支持。本文将深入探讨Hologres的特点及其在实时数仓中的应用,并通过具体的代码示例来展示其实际应用。
221 0
|
3月前
|
机器学习/深度学习 存储 数据挖掘
Hologres 与机器学习的融合:为实时分析添加预测性分析功能
【9月更文第1天】随着数据科学的发展,企业越来越依赖于从数据中获取洞察力来指导决策。传统的数据仓库主要用于存储和查询历史数据,而现代的数据仓库如 Hologres 不仅提供了高性能的查询能力,还能够支持实时数据分析。将 Hologres 与机器学习技术相结合,可以在实时数据流中引入预测性分析,为企业提供更深入的数据洞见。本文将探讨如何将 Hologres 与机器学习集成,以便实现实时的预测性分析。
92 4
|
3月前
|
SQL Java OLAP
Hologres 入门:实时分析数据库的新选择
【9月更文第1天】在大数据和实时计算领域,数据仓库和分析型数据库的需求日益增长。随着业务对数据实时性要求的提高,传统的批处理架构已经难以满足现代应用的需求。阿里云推出的 Hologres 就是为了解决这个问题而生的一款实时分析数据库。本文将带你深入了解 Hologres 的基本概念、优势,并通过示例代码展示如何使用 Hologres 进行数据处理。
415 2
|
4月前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版产品使用问题之使用CTAS同步MySQL到Hologres时出现的时区差异,该如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4月前
|
OLAP
云端问道5期-基于Hologres轻量高性能OLAP分析陪跑班获奖名单公布啦!
云端问道5期-基于Hologres轻量高性能OLAP分析陪跑班获奖名单公布啦!
436 3
|
4月前
|
SQL 消息中间件 OLAP
OneSQL OLAP实践问题之实时数仓中数据的分层如何解决
OneSQL OLAP实践问题之实时数仓中数据的分层如何解决
63 1