实时数仓 Hologres 产品介绍:一体化实时湖仓平台
内容介绍
1. Hologres :面向未来的一体化实时湖仓
2. 运维监控
3. 客户案例
4. 总结
今天和大家分享一体化实时数仓 Hologres 的整体能力介绍。
这是一个传统的大数据实时数仓架构。数据从Kafka进来之后会被分成多条链路,消费之后写到数仓中来。对于离线数据通常会写入 MaxCompute、Hive 这种离线数仓,然后进行数仓分层,以供上游去进行消费。对于实时数据,通常会用 Flink 进行消费,然后跟 HBase 或者 Cassandra 这些 KV 数据库里面的维表进行维表 Join 之后进行高度汇总,再写回 Hbase 、Cassandra 这些 KV 数据库,最后进行检查,用于提供线上服务。对于 Olap 层的数据会写入 Click House、Druid 等产品进行分析。我们通常需要同时分析离线和实时的数据,中间会使用 Drill 或者 Presto 这种产品进行联邦查询,当 Performance 不满足需求的时候,还会用 Redis、Mysql 等产品进行结果缓存。在整条链路上会有多次数据搬迁,形成数据冗余,同时体系非常纷繁冗杂,形成了数据孤岛,资源消耗量大,在这种情况下, Hologres 全新升级提供了一体化实施湖仓的能力。
01、 Hologres :面向未来的一体化实时湖仓
Hologres 基于 MPB 和存算分离架构,实现了一份数据上的多种计算,可以实现客户在实时湖仓上的诸多需求,简化架构,支持湖仓存储一体,多模式计算一体、分析服务一体和 Data+AI 一体,接下来会逐个展开介绍 Hologres 是如何实现这四个一体化的。
1.1 分析服务一体
Hologres 自 2020 年商业化以来就提出了分析服务一体化的概念。
1.1.1 Fixed Plan
在分析服务一体化的场景下, Hologres 支持独特的 Fixed Plan 能力,实现了高性能的写入和查询能力,写入即可查。这是常见的 Olap 查询实现写入的执行计划,可以发现需要经过协调器、优化器等多个组件。 Hologres 使用独特的 Fixed Plan 能力,在写入明确的场景下,直接将数据写入存储层,在使用 Fixed Plan 的情况下,轻松实现数十万到数百万的 QPS 的写入和点查性能。
1.1.2 Binlog
Binlog 也是 Hologres 独有的能力,它让 Olap 产品不再是数据的终点,也可以是数据的起点。 Hologres 像传统数据库一样,提供了 Binlog 的能力, Flink 或者 JDBC 可以消费 Binlog ,实现实时数仓分层。数据进入 Hologres 之后生成 ODS 层数据, Flink 消费 ODS 层数据生成 DWD 层等诸层的数据,最终实现实时数仓分层。在这种架构下解决了传统中间层使用 Kafka 数据之后不易查、不易更新、不易修正的问题,实现了数据复用、模型统一、架构简化的目的。
1.1.3 JSON 列式存储
日志场景是常见的分析场景, APP 等应用经常使用 JSON 数据来记录数据。比如说像这样的一份数据,记录了一个网站里面用户喜欢看电影的数据, JSON 的优势是可以任意的变化,可以随意的增加 Key Value ,无需修改表结构,劣势是在做查询的时候,需要把整行数据都扫描出来,然后做解析,性能较差。
比如说上图的一条查询,如果要去查 JSON 的数据,那需要扫描所有的 JSON 数据。 Hologres 提供了 JSON 列式存储的能力,在 JSON 写入的时候解析其结构,将 Key 拆解开来,使用列式存储的模式进行存储,这样可以有效的提高数据压缩,减少数据存储的成本。同时在查询的时候仅需扫描相关key的数据即可,无需整行数据全量扫描,极大的减少了数据扫描量,提高了查询性能。比如说以上查询用列式存储之后,只需要查询两个key的数据即可,真正做到了保证易用性的同时,提升了查询性能和查询效率。
1.1.4 行为分析、画像分析能力全场景覆盖
在数仓场景上,行为分析、画像分析都是非常核心的场景,对比 Hologres、 Doris 等产品在这些场景上, Hologres 提供了丰富的函数和索引,同时覆盖了包括漏斗分析、留存分析、路径分析、属性标签分析和行为分析的所有场景,真正做到全场景的覆盖。
1.1.5 数据冷热分层
最后在存储上, Hologres 支持冷热存储分层。近期高频访问的数据可以写入热存,对于历史数据归档到冷存,这样来节约成本,我们只需指定归档的策略和规则,就可以轻松实现冷热数据的分层,对于归档的场景,数据是异步迁移的,业务无感知不影响读写。
1.1.6 计算组资源隔离、实例分时弹性
资源隔离往往是MPB产品的老大难问题。在分析服务一体化场景中,写入 Olap 查询和线上服务互相影响,做好资源隔离尤为重要。 Hologres 推出了计算组实例,不同计算组之间容器级别物理隔离,同时对外只有一个 Endpoint 。在业务需要使用、切换的时候,可以轻松的通过配置路由表、用户的权限来实现整个计算组的切换、切流等操作。
同时计算组支持分时弹性,每个计算组可以独立的设置弹性计划,在业务高峰时分配更多的资源,在业务低峰时分配更少的资源,实现多快好省的资源隔离。比如说像上面这张图,我们的业务通常具有一定的波峰波谷的特征,这个时候使用分时弹性就可以更好的贴合这个业务的特征,让计算资源真正的用好、用到位。
1.1.7 Serverless Computing :稳定执行大 ETL 和大查询
大量的客户在 Olap 产品中会定期执行离线调度,低频执行大 ETL 和大查询,但是这种低频执行的大查询和大 ETL 通常会因为资源争抢而 OOM 或者跑得很慢,为了这种低频的查询和 ETL 去预留大量的计算资源会很不经济。 Serverless Computing 正是 Hologres 针对这种情况给出的一种解法,它允许单条的 SQL 使用 Serverless Computing 的共享资源池的资源进行查询,每条 SQL 单独分配资源进行执行,相互之间资源隔离,且按照实际使用的计算资源和时长进行按量付费,可以让大查询、大 ETL 多快好省的去执行。
这是一个典型的用户场景,用户在凌晨的时候会去执行 ETL 作业,此时需要大量的计算资源,但是在白天没有这么多查询量,预留的资源极大地造成了浪费。在使用 Serverless Computing 之后,只需预留白天查询所需要的量,凌晨的 ETL 使用 Serverless Computing 去执行,同时将预留资源降下来,最后实现整体成本下降30%以上,保障业务的稳定性和作业的隔离性。
1.1.8 Query Queue
最后我们在新版本中提供了查询队列的能力,实例可以设置多个队列,同时在队列上可以设置并发数和排队时长。查询按照规则去匹配队列,当查询队列中 Running 的 SQL 超过并发数时,查询就会开始排队,当排队超过排队长度的时候, SQL 可以被 Cancel 。这样的方法可以有效地控制实例的并发,隔离大查询,保证实例的稳定性。
1.2 湖仓存储一体、多模式计算一体
1.2.1 Hologres External Database
在新版本中 Hologres 支持了 External Database 的能力。它作为一种在 PG 生态上的全新抽象,它可以映射到一个原数据系统上,比如说 MaxCompute 、 Hive MetaStore 或者 DLF 等等。 External Database 在映射对方的原数据系统的 Catalog 上去创建表等等。由于原生的 PG 生态的 Database 就是三层结构,那么 External Database 就可以轻松的兼容BI生态的各种行为, BI 生态可以以原生的方式去查询和使用这些数据,无需去做一些临时的自定义 SQL ,就可以像内部的 Database 一样去使用外部的 External Database 里面的数据去访问湖上数据。当然这些数据也可以直接用于构建 Dynamic Table 实现整个数仓的分层。
1.2.2 Hologres Dynamic Table
Hologres 推出了 Dynamic Table 多模式统一计算,支持使用一份数据、一份 SQL 、一份计算资源,解决实时湖仓上的分层问题。整个 Dynamic Table 支持全量、增量和流式的三种刷新模式,分别应对不同时效性和成本的需求。对于全量模式,它的成本和时效性是最低的,适合固定报表、历史周期回刷的场景。对于增量模式,它适合近实时的场景,它的成本适中,时效性能到分钟级别,适合近实时的数据分析场景。流模式成本是最高的,需要的资源是最多的,但是它的时效性是最高的,更适合实时数据分析和风控的场景。
Dynamic Table 使用的 DDL 主要分成两个部分,一部分是刷新模式,支持流、增量和全量的模式,另一部分是数据的生成逻辑,就是用SQL怎么定义以及 Dynamic Table 是怎么去生成的。增量模式、全量模式其实更多只是在更改它的 Refresh Mode ,用不同的 Refresh Mode 去刷新数据,做到一份数据、一份 SQL 、一份计算,支持多种刷新模式,满足不同业务时效性的需求。
1.3 Data + AI 一体
对于 DB For AI 的场景, Hologres 集成了达摩院的向量引擎,可以和 PAI 、通义大模型等结合,提供完整的能力。 Hologres 作为向量检索的一个优势是数据可以实时更新,且写入即可查。 Hologres 查询性能优于开源十几倍,减少回答问题“打字机”的效果,提升整个问答的响应速度。下面是几个 AI For Data 的场景。
首先是 DataWorks Copilot 的能力。 DataWorks Copilot 完成了对接 Hologres ,提供了 SQL 生成、 SQL 续写、 SQL 改写、 SQL 纠错、 SQL 解释、 SQL 注释等一套完整的能力。让用户写 SQL 更方便,让不会写 SQL 的同学能够通过自然语言生成 SQL ,进行查询,真正做到 AI For Data 的场景。
同时通义析言 GBI 和 Hologres 深度合作,深度结合,提供了这种 GBI 的能力。通义析言是通义实验室推出的 NL2SQL 的产品,以 Github 数据集中路径相关分析为例,显示用户怎么样通过通义析言查询 Hologres ,可以发现在这个例子中,用户只需要输入一段自然语言,就可以通生成相关的 SQL ,并且直接通过图形直观的去表达到底使用了哪些的问题,得到相关的图形化的答案。
02、 运维监控
运维对于整个数仓来说是非常重要的能力,我们来具体看一下 Hologres 在这上面提供了哪些重要的运维能力。
这里面经常会涉及到 DBA 比较痛的一些痛点,比如说新增了哪些业务、新查询,哪种业务影响了整个集群。传统的方式需要根据 SQL 进行一些聚合和排序才能得到这些答案。 SQL 指纹是 Hologres 提供的一种自动 Query 聚类分析的能力, Hologres 把 SQL 进行抽象,把条件去除,针对一类 Pattern 生成一个指纹,基于指纹就可以快速的统计分析一类 SQL 特征出现的一类问题。比如说用左边这个 SQL 就可以查出昨日新增的满足一定 Pattern 条件的 Query ,用右边这种还可以拿 Query 去归类、分析、统计,做统计型行为。
DBA常见的第二个问题就是难以集中的去获取分析查询中需要查看的各种信息。比如说当一个查询报错的时候,它可能是因为锁冲突报错了,但很难去找到是哪些上交锁导致了这些问题,在 Hologres 的 Query 洞察中,只要输入 Query ID ,就可以快速的拿到所需要的信息。比如说这条SQL读了哪些表,写了哪些表,哪些步骤花了多少时间,以及出现锁冲突的时候,它会显示这一段时间里面执行了哪些DDL,它有可能跟哪些锁进行冲突了。以便DBA可以快速的定位问题,分析问题,解决问题。
DBA常见的第三个问题是实例健康问题,我的实例现在到底运行的怎么样?我的实例到底稳不稳定? Hologres 提供了两大利器,首先是针对 SQL 维度的,提供了 SQL 诊断的能力。在 SQL 诊断上会输出一个报告,告诉 DBA 在不同维度上的 SQL 的趋势、明细,以及常见的失败的 Query 的明细等。它可以辅助 DBA 快速的了解实例的使用情况,并且做一些相应的优化和应对的策略。对于失败的 Query 会有报错的原因,它可以根据我们给的这些报错的原因,快速去处理这些失败的 Query 。同时我们还从表的维度给出了相关的表索引诊断信息,它能够从当前实例的 Table Group表索引等维度进行诊断,帮助业务实现实例的治理,从而让实例提升它的稳定性和性能。
最后 Hologres 提供了丰富的监控指标,其中包括不同引擎的 QPS 、RPS 、 Latency ,以及可观测性的 Binlog 、Serverless Computing 等使用功能的运行情况,以便 DBA 及时的了解任务以及实例的负载,同时也提供了包括锁、 Aanalyze 收集统计信息等健康度的指标。可以帮助业务快速的观测实例的运行状态、运行情况以及及时的处理异常。所有的这些 Metrics 都是可以配置报警的,以便在细颗粒度上的时候,进行及时的报警,及时的响应,及时的处理问题。
03、 客户案例
最后我们再来看几个案例, Hologres 主要应用的场景涵盖互联网、新零售、物联网、金融、游戏、电商、出行等等多个行业。支持传统的统计分析类的场景,比如说 BI 报表、实时大屏、数据中台,到一些运营的场景,比如说人群运营类包括精准化营销、用户画像、圈人圈品。包括推荐类,智能个性化推荐、广告投放和智能客服坐席分配的场景。比如在智能客服的场景下,我们可以根据用户的问题返回相似的答案等等。最后是实时监控类,进行订单物流类的监控、网络监控、实时风控以及直播监控。
37 手游是典型的 Hologres 的一个用户。原先使用的是 Flink + Presto + HBase + ClickHouse 的组合。它的主要痛点在于整个ETL链路非常复杂, Olap 架构冗余、查询慢。之后替换成了 Hologres + Flink + MaxCompute 这种实时入仓的方案。在 Hologres + Flink 的这种场景中,数据写入即可见,同时也可以基于 Binlog 实现实时数仓的分层。同时在这个架构里面可以去替换原先架构里面 Kafka 的中间层,减少数据的流转和冗余,不需要同一份数据既往 Kafka 写,又往Hudi写,造成整个数据的冗余成本的增加。 Hologres 作为统一的数据服务的出口,整个查询是毫秒级响应,毫秒级延迟,相比 ClickHouse 性能提高百分之百,且 Join 性能要快十倍。整个架构由于组件更少,它的整体架构更简单、更简洁、更灵活,运维更方便,业务变得更加的敏捷。
要查看更多的客户样例,可以扫描上图右侧二维码,里面有四十多个客户样例的合集。覆盖了阿里云上的客户案例,包括互联网类的、软件服务类、在线教育类的、广告营销类的、游戏娱乐类的和交通物流类的,以及阿里巴巴整个集团内的案例,包括实时数仓的、流量分析的、实时大屏的、推荐搜索类的、 AI 的和交互式分析类的场景。同时也可以扫描右下角的二维码,领取免费试用的 5000CU 时和 100G 存储,快速零成本的来体验 Hologres 带来的极速场景和极速体验。
04、 总结
Hologres 使用一份数据,一份计算,一份服务,极大的提高了整个数据开发和应用的效率。是一个一体化实时湖仓的平台,支持高性能实时分析,支持丰富的 Serverless 的弹性的场景,以满足低成本的要求。最后提供了丰富的工具链和能力链,极大的提高了用户使用的易用性。我们在湖仓存储一体、多模式统一计算、分析服务一体化和 Data + AI 一体化的场景下,提供了丰富的能力。现在我们的折扣再降15%,预付费实例年付7折。