Hologres+Flink企业级实时数仓核心能力介绍-2024实时数仓Hologres线上公开课03

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
实时数仓Hologres,5000CU*H 100GB 3个月
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
简介: 本次分享由阿里云产品经理骆撷冬(观秋)主讲,主题为“Hologres+Flink企业级实时数仓核心能力”,是2024实时数仓Hologres线上公开课的第三期。课程详细介绍了Hologres与Flink结合搭建的企业级实时数仓的核心能力,包括解决实时数仓分层问题、基于Flink Catalog的Streaming Warehouse实践,并通过典型客户案例展示了其应用效果。

Hologres+Flink企业级实时数仓核心能力介绍-2024实时数仓Hologres线上公开课03


内容介绍:

一、Hologres+Flink企业级实时数仓核心能力

二、解决实时数仓分层问题

三、Hologres+Flink企业级实时数仓核心能力基于

四、Flink Ctalog 的Streaming Warehouse

五、实践典型客户案列

 

本次分享的主题是Hologres+Flink企业级实时数仓核心能力介绍-2024实时数仓Hologres线上公开课03,由Hologres产品经理骆撷冬(观秋)分享。

课程链接:https://developer.aliyun.com/live/254101

更多学习内容可跳转阿里云培训中心https://edu.aliyun.com/

image.png

本内容关于Hologres+Flink搭建起企业级实时数仓核心能力解读


一、Hologres+Flink企业级实时数仓核心能力

image.png

1. 简介

随着业务发展,业务对于时效性的要求在逐渐提升,各种场景都需要实施。比如春晚实时直播大屏双11gmv实时大屏、实时个性化推荐等,各种场景对数据的时效性有着非常高的要求。随着实时性要求的发展,大数据技术也开始发展出实时数仓的概念。

相比于传统的离线数仓,有明确的方法论,通过离线的定时调度来实现调度方式通过ods- dwd-dws -ads这样明确的数仓分层方式来完成,是离线数仓的搭建,但是实时数仓在业内并没有明确的方法论,实践方案多没有标准方法也没有明确的数据流转的方法论。所以业内提出了streamingwherehouse的概念,本质上是希望能够解决数据实时流动的问题,从而解决数据实时分层的问题,这是企业及实时数仓的本质。

2.传统实时数仓分层多方案

image.png

2.1基于flink+kafka实时数仓分层方案

实时数据经过flink实时处理加工后,将最终结果写入到kY6引擎中应用来查询。通过flinkkafka的反复交互,实现数据从ods到dwd到dws每一层收藏构件业务,如果需要查询中间层,需要把中间层的数据实时写到实时数仓中来供应业务使用这样的架构优势在于,数仓层次是完备的各层值级间也很清晰,整个处理链路也相对分工明确

这样的架构有多个劣势:

(1)大量的数据同步任务。资源消耗非常大,处理链路非常复杂。

(2)中间层的kafka的数据无法直接排查费用性差。如果需要中间数据可读,需把数据双写到仓中。

(3)无法做到快速响应schema动态变化,比如百色沟原表,发生了夹裂改数据类型等情况,会使整个数据链路都需要做改动

2.2定时调度数仓方

image.png

通过flink把数据源的数据实时写实数仓中形成dwd层。再通过数仓或周边工具的高频调度能力以分钟级为例来构建dws和ads层实现分钟级的数据增量更新,最终供下游使用它的优势在于成本相对flink+kafka来说更低也偏向于成熟劣势在于它增加了数仓数据处理电路的延时,整个实数仓退化成了净实数仓。并且调度层级越多,延时越大。

2.3.化视

image.png

flink负责将原表数据实时写入实时数仓中来形成dwd层,再通过实时数仓的雾化视图来加工形成bws或者ads层,最终为下游做服务。这样的架构优势在于整个数仓的处理加工的链路功能都是系统内置的,并且物化图的结果能够提供一些高QPS查和简单查询能力不足之处在于业内在实时图方面的能力成熟。对于算计各方面的支持都有限。其次,很多系统提供的基本上都是一种时效性比较差的P模式的通常无法满足持续仓对于时效性的需求。


二、解决实时数仓分层问题

1.通过Hologres+Flink来解决实时数仓分层的问题

image.png

Hologres+Flink是阿里云一站式实时入仓batchgres包含多方面的数据应用能力,olap多维分析,包括在线服务的检查能力,包括仓一体,量计算和大模型服务等。

Hologres是一款支持各种场景的一站式的实时数仓。传统实时数仓可以解决亚秒级交互式分析的能力支持行业共存的方式,可以实现高吞吐的数据实时写入更新Hologres通过兼容达摩院自研proxima向量引擎,从而实现向量进行高性能计算。同时Hologres还支持一系列高可用架构实现业务的弹性高可用以及业务的负载隔离。

2.基于Flink+Hologres的streaming warehouse 方案

image.png

数据源通过mysql或其他数据源通过flink 实时写入hologres中,形成ods层。hologres支持binlog,可以提供表的增量变化信息,来成为flink语言表,通过flink 全增量消费hologres元表,加工后再写入hologres中形成dwd层。dwd层的数据再次生成binlog的供flink消费,再次写入hologres 中,形成聚合层DWS以此最终为下游提供服务。

这样的架构优势有:

1解决传统中间层kafka数据不易查不易更新、不易修正这些问题hologres是一款实时数据,仓库数据写入即可查。不管聚合层dws层还是中间ods dwd层,每一层都实时可查,实时更新。

2中间层,不仅可以供flink消费,还可以供下游直接提供服务,比如业务直接查询oddst或dwd做olap分析,甚至是做在线服务等场景都可以直接实现。

(3)整个链路的数据都是复用的模型统一,架构简化,一份存储一份引擎

hologres与Flink结合形成streaming warehouse方案得益于hologres与Flink多年以来的深度集成主要分四个方面。

image.png

(1)hologres可以作为flink的原表因为hologres支持生成binlog类似于传统数字数据库的binlog可以供flink进行消费,以此实现多方面能力,包括全量能数据读取,binlog数据读取、cdc读取以及全能量一体化读取。

(2)hologres可以作为flinkhologres支持行存或者行列共存的模式。以此可以用flink来进行表关联。本质上对于hologres,对于表的检查基于高性能的防表的检查能力,可以提供对于表的百万rps查询。

(3)hotokafka可以作为flink的结果表格,hologres支持强大的实时数据写入能力与整行更新能力,完美匹配flink对于结构表的要求。同时hologres还支持宽表高性能的局部更新能力,可以极大程度地简化flink多流教育场景。

(4)整个链路通过flink创建Hologres catalog来完成flink支持holgress catalog实现统一的原数据服务,以此可以支撑整库原表整库同步以及schema- evolution数据类型变更,包括加力等场景,通过四个方面的深度集成,来承载flinkhologres搭建screaming warehouse解决方案。


三、Hologres+Flink企业级实时数仓核心能力

screaming warehouse解决方案依托于hologres的三大核心能力:binlog行列并存和资源隔离。

1.binlog

image.png

可以助力整个实时数仓链路的数据实时流动。类似于传统数据库,比如masygy或pg的binlog可以用来记录单表数据修改日志,包括insert deletebefore,update四种数据事件类型可以提供表的增量变化信息,有多种场景的应用。首先最重要的就是用于本所说的解决方案,在数仓分层间进行数据的实时加工,可以通过flink 全增量消费holo表加工之后再次写入holo实现整个全链路数据的实时流动,还有其他一些场景。比如可以进行多实力之间的数据同步数据的行列转换以及数据的变化检测。

holdress的binlog表包含图所示的这些字段

image.png

这些字段用来记录用户的表数据变更的信息。通过flink+hologres binlog就可以实现状态的全链路的事件实时驱动开发。

2.行列并存

1行列并存核心能力是hologres 核心共享能力行业共存可以助力高性能的binlog消费,以及高性能的微表观点。hologres支持行列共存的表存储格式,一张表可以同时存储一份行存数据和一份列存数据。下游只感知到一张表可以用于多个场景。比如作为实数层的中间层,ods层或dwd层可以生成binlog表存储的行列构成的方式来供flink进行高性能的binlog消费本质上就是高性能的点查来完成实时数仓的分层。第2点是可以作为flink的尾表来实现高性能的实时检查,以此来完成高性能的表办理完成dwd层表的实施构建。第3点,典型应用场景是所有的表,如果存储成了行列共存,不仅可以完成上述两种场景binlog消费,以及实时检查,这些表还都可以同时用于对接下游业务系统用作olap分析。以下是holo的三种表存储格式包括行存,列存和行列共存,分别可以面向不同的场景

image.png

3.hologres的资源能力

hlogres的资源能力最重要的能力推出了计算组实力高级的可以实现极致的负载隔离的一个架构架构图,如图所示。

image.png

首先是一个弹性弹性的计算存储分离的格式。在存储层只有一份存储,在计算层,把一个实力分隔成不同的计算组,以此来实现计算之间的完全隔离。比如可以通过一份数计算组来实现离线写入,通过一份计算组来做实时写入,通过一份计算组来做olap查询,通过第四份计算组来做在线在线服务。整个架构共享一份存储对于不同的计算组之间计算资源完全完全隔离,可以实现写隔离、读写隔离、读读隔离等多种隔离方式。并且每一个计算组可以支持独立的弹性rop通融。

对于业务层的应用来说,使用统一的n的point来为下游提供服务。通过标准的c口接口,实现复载的自动录自动路由、自动切换,以此来实现极致的负载隔离。那么针对于hologres+flink搭建实时入仓的场景而言,就可以实现hologres写入使用一份计算binlog使用另外一个计算。对于业务的olap查询场景,在线服务场景,也可以分别使用不同的计算来承载以此实现极致的负载隔离。


四、基于Flink Ctalog 的Streaming Warehouse实践

1.典型的电商场景

image.png

典型的电商平台Streaming Warehouse构建好的架构。电商平台的数据源存储在mycql,包括orders订单表、orderspay支付表以及product catalog商品信息三张表。

首先通过flinkcatalog功能,将mycql整个的数据实时同步到hologres中,形成ods

第二步,通过flink的多流效应以及表关联能力,ods层的三张表实时打翻,形成dwg层写入到hotogres

第三步,通过flink的实施指标计算实施聚合能力实时聚合Orders表中的不同维度,形成dws写入hologres。DWS层可以直接为下游用户特征推荐系统提供服务。

步,统计信息查询的运营需求可以通过Dwd层的管理hologres表来承担

2.ODS实时同步

image.png

首先第一步是ods层的实时同步能力。业务将存储订单支付和商品信息三张表通过flink 的catalog功能,可以直接将mysql整库实时同步到中形成ods。右边的c口,只需要通过在flink中创建flink catalog后通过crazytabase as语句,即可将mysql 整库同步到hologres 中,整个操作步骤简化,数据同步效率极度提升。

image.png

ods同步的场景中,有很多功能是hologres +flink 共建的非常的易用。

2.1对于表结构变更,支持自动同步

通过flink catalog,就可以实现原数据的自动发现和管理,再配合great table as的语法,实现数据的同步和表结构自动变更同时支持读取数据的变更以及表结构的问题变更并且实时同步到下游的Hologres表中,并且数据和表结构的变更都可以保证顺序。

2.2整库同步

对于业务业界的整个同步能力而言,在以前有明显的缺点,一是库同步需要浪费很多资源二是会对于上游的数据库产生比较大的压力。hologres 加blink,可以通过great database as语法配合catolog来实现不同步功能解决传统整同步能力带来的诸多问题

2.3分库分表合并同步。

image.png

传统数据库通常为了解决数据量较大的难题时,会选择进行分库分表操作。对于实时入仓hologres而言,只需要把数据存储到同一张表中,依托于hologres的强大的mpp架构,就可以实现对于下游的在线分析在线查询阿里云flink实现了对于原表分表合并同步的核心,只需要通过create tables语法以及对于原表正则表达式,就可以将原表的数据库的分库分表高效的合并同步到下游的hologres中。

3.DWD实时构建

image.png

当时数据实时写入ODS后,hologres表中生成Binlogflink 来读取hologres ods 层binlog,并且采用多流合并、表关联等等方式,把订单交易商品三张表打成一个大表,并且实时写入hologresdwd层形成订单汇总表。

具体c口通过greatable 语句形成dwd表的创建通过flink  c口中两个insert语句可以实现多流合并和维表关联。

3.1 orders表的实施打

通过和商品表的维表关联,形成实时打的能力。

3.2写入交易相关的信息

对于insert语句,最重要的本质上的能力就是每一个Insert语句都是对于DWDoders 这张表的局部更新,通过两个局部更新语句,最终将hologres 的bwd orders这张表实时打宽形成订单汇总表的构件。DWD实时打宽的能力中,其中很重要的一步是多流合并。

image.png

对于传统的多流合并的能力,通过flink +kafka来实现的多流交易能力无法使用维表关联的方式,成本非常高,非常复杂,需要将多流使用flink的多流join把结果写到卡kafka或者Date hup中,再通过复印的加工一层形成ads或dws层下游服务。

但是对于blink+hologres 的方案,可以依托于holo的强大的局部更新,也就是部分更新的能力把多张流同时写入到holo表中。同时针对于表也在这个过程中实现表关联,每条流只是更新HOLO表的部分裂,形成实时表,从而来简化操作,同时节约计算成本。

dwd层实施构建Hologres做到这样高的性能的实时写入与更新依托于Hologres的一个高级功能fixplan。传统的Holo引擎,针对于一条c口是需要经过优化器生产执行计划,经过协调器,查询引擎、存储引擎等多个组件,最终完成了c口的执行。但如果使用了fixplan,则可以绕过优化器、协调器等多个组件直接使用固定的plan来实现数据的高性能实时写入与更新。这个功能也有测试结果作为参考下图。

image.png

针对于open only写入无主键表的场景隐私写入有主见表的场景两种数据更新场景。几乎都可以达到近百万,甚至是2百万的rps依托于fix plan功能。可以实现对于数据的高性能实施写入与更新,从而完成DWD层的实时构建。

4.DWS层的实时聚合

image.png

当构件完成DWD层后再次生成HologresBinlog,通过flank读取hologres的Dwd层的binlog数据来进行实时指标的聚合计算。比如可以形成用户维度的聚合表,也可以形成商户维度的聚合表等,取决于业务需求。最终把每一个维度的聚合表,分别写入到Hologres的dws层的表中,形成实时聚合表。整个c口如图所示,首先我们可以再通flink c口就可以完成两个聚合表的创建,再通过flink cql执行写入。

在写入过程中,完成聚合计算,即可以完成整个 dws层的构件。

5.应用

image.png

当整个数据的分层和加工完成之后,业务可以通过hologres查询数据,并且应用到业务层业务可以直接查询dwd层的数据,如图场景6的C口。对于宽表数据来展示实时报表统计最近30天每个品类的订单总量、退单总量等信息,可以通过直接查询层的明细表来明细拍表来实现同样,对于下游有一些在线服务的场景,比如根据用户特征来推荐商品,本质上是对dws users这张表的检查比如根据商铺特征推荐商品这样的场景可以直接查询dws层的hologres 表来提供百万级的qps查询


五、典型客户案列

三七手游是holo使用flink+hologres 搭建实时数仓的典型客户。通过Hologres 完成了整个实时数仓的架构升级,实现统一数据平台。在使用flink+hologres 架构如图所示。

image.png

1. 构建缺点

通过flink数据原则,数据经过flink +kafka收藏搭建方式来形成实时数仓分层。其次,将实时数据通过flink写入到数据仓库和数据服务中来形成离线收藏的搭建。当实时数仓和离线数仓搭建完成之后,针对于下游的不同业务需求,使用不同的开源引擎进行服务。对于进行查询的需求,通过impala对接报表。对于交互分析大屏而言可以使用hologres来完成报表分析。对于一些实时分析实时查询的需求,通过Doris来做下分析。这样的架构非常复杂且割裂主要缺点包括两个方面一个方面是1t2链路非常复杂,开元flink  缺少以smart evolution能力当上游的数据源的表结构发生变更,每次变更需要重启blank任务,运维操作复杂。其次,对于数据湖而言,估计的查询性能有待提升,客户需要额外使用,presso来做加速等一个链路非常冗余。第二方面是OLAP架构冗余查询整个架构里的OLAP组件非常多需要开发在不同的c口之间切换,整个操作非常繁琐。且这些开源的OLAP屏查询引擎技能,很难满足日益增长的业务需求。第三方面整个架构系统非常多,每不同的系统会带来不同的存储,整个存储方面冗余,成本显著增加。造成整个架构非常复杂,运维非常困难。使用Hologre +Flink+max构建出了实时离线一体化的收藏架构后,客户的痛点得到了极大的满足。

2. 计划后的架构及优势

image.png

中左下角所示,实时数仓使用的是Flink+Hologres 形成实时数仓分层。关于离线数仓,通过Date or+maxcom cute离线数据完成时实时数仓分层,数仓和离线数仓之间,可以通过Holo像xcompute写入数据来实现离线数据归档,也可以通过max -compute,如Hologres来完成对于实时数据的修正,holo也可以直接对接max -compute来实现数据的加速查询和联邦查询holdress作为一款统一数仓出口为下游的数据分析提供服务。这样的架构带来了明显的业务收益。

首先整个数据处理链路是写入可见的百万级的数据更新,可以实现毫秒级的延时业务的时效性得到了显著提升。

第二,阿里云的flink+hologres 可以加速,可以提供完整的study的能力。上游数据发生了表结构的变更不需要重启flink作业,可以显著降低开发和运维管理难度。

第三,实数链路中,flink直接读取hologres binlog,以此替换kafka可以减少数据的流转。

第四,作为统一数据服务出口来提供服务查询毫秒延时,相比flicos性能提升超过100%,在教育场景性能快了10倍,整个架构简化、更加灵活,运维变得简单,业务更敏捷。

三七手游将整个架构应用于很多业务场景,包括但不限于买量优化报表分析、精细化运营、用户画像分析、智能诊断等多种场景。

image.png

欢迎扫码加入Hologres 和 Flink钉钉交流群购买59元Hologres 15000c位值计算资源抵扣包以及59元Flink计算资源抵扣包。

 

相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
目录
打赏
0
相关文章
【实践】基于Hologres+Flink搭建GitHub实时数据查询
本文介绍了如何利用Flink和Hologres构建GitHub公开事件数据的实时数仓,并对接BI工具实现数据实时分析。流程包括创建VPC、Hologres、OSS、Flink实例,配置Hologres内部表,通过Flink实时写入数据至Hologres,查询实时数据,以及清理资源等步骤。
用友畅捷通在Flink上构建实时数仓、挑战与最佳实践
本文整理自用友畅捷通数据架构师王龙强在FFA2024上的分享,介绍了公司在Flink上构建实时数仓的经验。内容涵盖业务背景、数仓建设、当前挑战、最佳实践和未来展望。随着数据量增长,公司面临数据库性能瓶颈及实时数据处理需求,通过引入Flink技术逐步解决了数据同步、链路稳定性和表结构差异等问题,并计划在未来进一步优化链路稳定性、探索湖仓一体架构以及结合AI技术推进数据资源高效利用。
325 23
用友畅捷通在Flink上构建实时数仓、挑战与最佳实践
Hologres OLAP场景核心能力介绍-2024实时数仓Hologres线上公开课02
本次分享由Hologres产品经理赵红梅(梅酱)介绍Hologres在OLAP场景中的核心能力。内容涵盖OLAP场景的痛点、Hologres的核心优势及其解决方法,包括实时数仓分析、湖仓一体加速、丰富的索引和查询性能优化等。此外,还介绍了Hologres在兼容PG生态、支持多种BI工具以及高级企业级功能如计算组隔离和serverless computing等方面的优势。最后通过小红书和乐元素两个典型客户案例,展示了Hologres在实际应用中的显著效益,如运维成本降低、查询性能提升及成本节省等。
场景实践 | 基于Flink+Hologres搭建GitHub实时数据分析
基于Flink和Hologres构建的实时数仓方案在数据开发运维体验、成本与收益等方面均表现出色。同时,该产品还具有与其他产品联动组合的可能性,能够为企业提供更全面、更智能的数据处理和分析解决方案。
实时计算 Flink版产品使用合集之如何将Hologres字段转换为小写
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
畅捷通基于Flink的实时数仓落地实践
本文整理自畅捷通总架构师、阿里云MVP专家郑芸老师在 Flink Forward Asia 2023 中闭门会上的分享。
8345 15
畅捷通基于Flink的实时数仓落地实践
实时计算 Flink版产品使用问题之使用CTAS同步MySQL到Hologres时出现的时区差异,该如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
实时数仓 Hologres操作报错合集之Flink CTAS Source(Mysql) 表字段从可空改为非空的原因是什么
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
实时数仓 Hologres操作报错合集之执行Flink的sink操作时出现报错,是什么原因
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
Hologres+Flink企业级实时数仓核心能力介绍
通过Hologres+Flink构建易用、统一的企业级实时数仓。